錯誤:啟用二進位日誌記錄的函數宣告中缺少「DETERMINISTIC、NO SQL 或READS SQL DATA」
匯入資料庫時MySQL,遇到錯誤「1418 (HY000):此函數在其聲明中沒有DETERMINISTIC、NO SQL 或READS SQL DATA,並且啟用了二進位日誌記錄」表示有問題的函數缺少適當的聲明。
解決方法:
有兩種方法可以解決此問題:
執行MySQL 控制台指令:
<code class="mysql">SET GLOBAL log_bin_trust_function_creators = 1;</code>
此指令放寬了對非確定性函數的檢查,允許匯入繼續進行。
設定mysql.ini:
新增將以下行加入mysql.ini 設定檔:
log_bin_trust_function_creators = 1
說明:
二進位日誌記錄對資料庫所做的所有修改。預設情況下,MySQL 要求修改資料的函數在其宣告中宣告為 DETERMINISTIC、NO SQL 或 READS SQL DATA,以確保它們可以準確複製。儲存函數的確定性聲明:
這些聲明告知 MySQL 函數的性質,指導最佳化和複製決策。注意:
如果停用二進位日誌記錄,則 log_bin_trust_function_creators 設定不適用。因此,確保指定適當的確定性聲明至關重要。 透過實作提供的解決方案之一,您可以解決錯誤並繼續資料庫匯入。以上是為什麼在啟用二進位日誌記錄的情況下 MySQL 會拋出「DETERMINISTIC、NO SQL 或 READS SQL DATA」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!