MySQL 錯誤:「此函數在其聲明中沒有DETERMINISTIC、NO SQL 或READS SQL DATA,並且啟用了二進位日誌記錄」
嘗試將資料庫匯入MySQL 時,可能會發生錯誤,指示函數在其聲明中缺少以下聲明之一:DETERMINISTIC、NO SQL 或READS SQL DATA。啟動二進位日誌記錄時會出現此錯誤。
解決錯誤:
可以透過兩種方式解決此錯誤:
設定MySQL 控制台: 在MySQL 控制台中執行以下命令:
SET GLOBAL log_bin_trust_function_creators = 1;
編輯設定檔:將以下行新增至mysql.ini 設定檔:
log_bin_trust_function_creators = 1;
這些修改允許將非確定性函數與二進位日誌記錄一起使用。但是,如果停用二進位日誌記錄,這些設定不會影響錯誤。
理解函數宣告:
需要注意的是,包含非確定性指令的函數,例如 NOW() 或 UUID(),應聲明為 NOT DETERMINISTIC。此外,從未複製模式讀取資料的函數也是不確定的。
最佳實踐:
理想的方法是理解和利用儲存函數的確定性聲明因為它們有助於複製最佳化。 MySQL 建議在儲存函數的定義中明確指定上述聲明之一,以避免潛在的錯誤。
以上是為什麼啟用二進位日誌記錄時 MySQL 會拋出有關確定性函數的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!