匯入 MySQL 資料庫時,您可能會遇到錯誤「1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its ments and二進位日誌記錄已啟用(您可能想要使用較不安全的 log_bin_trust_function_creators 變數)。
要解決此錯誤,您可以使用以下兩種方法之一:
方法1:暫時停用二進位日誌記錄
SET GLOBAL log_bin_trust_function_creators = 1;
方法2:設定mysql.ini檔案
log_bin_trust_function_creators = 1;
將此值設為 1,您可以放寬檢查非確定性函數。應謹慎使用此選項,因為它可能會損害資料的完整性。
了解確定性函數
為了避免將來出現此錯誤,有更好的方法是對儲存函數使用確定性聲明。這些聲明告知 MySQL 此函數對於相同的輸入參數是否總是產生相同的結果。以下是不同的確定性聲明:
DETERMINISTIC:
非確定性:
讀取 SQL 資料:
NO SQL:
CONTAINS SQL:
選擇正確的聲明
選擇正確的聲明函數的聲明取決於其行為。如果函數的輸出取決於資料庫外部的因素,例如當前時間或隨機數產生器,則應將其宣告為 NOT DETERMINISTIC。如果函數僅讀取數據,則可以將其宣告為 READS SQL DATA。如果函數不包含任何SQL語句,可以宣告為NO SQL。
以上是如何解決MySQL中的「1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!