如何解決MySQL中的「1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\」錯誤?

Linda Hamilton
發布: 2024-11-01 10:44:30
原創
985 人瀏覽過

How to Solve the

匯入 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:

  • 對於相同輸入參數始終產生相同結果的函數。

非確定性:

  • 對於相同的輸入參數並不總是產生相同結果的函數。如果沒有明確聲明,MySQL 預設為 NOT DETERMINISTIC。

讀取 SQL 資料:

  • 僅從資料庫讀取資料的函數。

NO SQL:

  • 不包含任何 SQL 語句的函數。

CONTAINS SQL:

  • 包含 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!