理解錯誤:「DETERMINISTIC、NO SQL 或READS SQL DATA」聲明要求
將資料庫匯入MySQL 時,可能會出現以下情況:遇到以下錯誤:
1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)
此錯誤表示定義的函數或預存程序在其定義中缺少以下聲明之一:
當MySQL 中啟用二進位日誌記錄時,需要這些聲明來確保資料完整性和複製一致性。
錯誤修復
要解決此問題,您可以使用以下兩種方法之一:
啟用log_bin_trust_function_creators 變數:
在MySQL 控制台中,執行以下指令:
SET GLOBAL log_bin_trust_function_creators = 1;
log_bin_trust_function_creators = 1;
CREATE FUNCTION my_function() DETERMINISTIC BODY -- Your function logic END
CREATE FUNCTION my_function() NO SQL BODY -- Your function logic END
CREATE FUNCTION my_function() READS SQL DATA BODY -- Your function logic END
理解確定性函數宣告
非確定性函數可以修改資料或使用不可預測的輸入,從而導致相同輸入參數產生不同的結果。因此,準確聲明函數行為以優化效能並確保資料完整性非常重要。 MySQL 文件提供了各種函數和預存程序函數宣告選項的全面指南,使您能夠為每個函數做出明智的決策功能。錯誤聲明可能會影響執行計劃並影響效能。
以上是為什麼我在 MySQL 中收到「DETERMINISTIC、NO SQL 或 READS SQL DATA」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!