欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql8函數創建失敗

林雅南2年前10瀏覽0評論

最近在使用MySQL 8時,遇到了一個奇怪的問題——無法創建函數。具體來講,當我嘗試創建一個函數時,MySQL給我返回了如下錯誤信息:

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (youmightwant to use the less safe log_bin_trust_function_creators variable)

在這個錯誤信息中,MySQL告訴我們無法創建函數是由于"binary logging"被啟用,而我們的函數的聲明中缺少"DETERMINISTIC"、"NO SQL"或"READS SQL DATA"等關鍵字。

那么,我們該如何解決這個問題呢?

首先,讓我們來了解一下這個錯誤信息中提到的三個關鍵字的意思:

  • DETERMINISTIC:這個關鍵字告訴MySQL,同樣的輸入數據在不同的時間返回的結果是相同的。如果函數并不是確定的,那么就不應該使用這個關鍵字。
  • NO SQL:這個關鍵字告訴MySQL,這個函數不會修改任何數據(例如,它只是簡單的計算一些東西并返回結果)。如果函數會修改數據,那么就不應該使用這個關鍵字。
  • READS SQL DATA:這個關鍵字告訴MySQL,這個函數需要讀取數據庫中的數據(例如,它需要執行一個SELECT語句)。如果函數不需要讀取數據,那么就不應該使用這個關鍵字。

如果我們想要創建一個函數,并且想要避免上面提到的錯誤,那么我們需要在函數聲明中包含至少一個這些關鍵字。

例如,如果我們要創建一個簡單的加法函數,那么代碼如下所示:

CREATE FUNCTION add_numbers(a INT, b INT)
RETURNS INT
DETERMINISTIC
NO SQL
BEGIN
DECLARE c INT;
SET c = a + b;
RETURN c;
END

在這個代碼中,我們包含了"DETERMINISTIC"和"NO SQL"關鍵字,因此MySQL將不會報告任何錯誤。

盡管這個錯誤看起來很奇怪,但只要我們包含了正確的關鍵字,就可以輕松解決它。如果你也遇到了這個問題,那么可以嘗試修改函數聲明并再次嘗試創建函數。