匯入MySQL資料庫時,可能會遇到錯誤「1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, 或 READS SQL DATA in its statements 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:
非確定性:
READS SQL DATA:
NO SQL:
CONTAINS SQL:
選擇正確的聲明
選擇正確的聲明函數的聲明取決於其行為。如果函數的輸出取決於資料庫外部的因素,例如當前時間或隨機數產生器,則應將其宣告為 NOT DETERMINISTIC。如果函數僅讀取數據,則可以將其宣告為 READS SQL DATA。如果函數不包含任何SQL語句,可以宣告為NO SQL。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3