首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

解決 MySQL ERROR 1665 (HY000):BINLOG_FORMAT 與事務隔離級別衝突

     編輯:MySQL 資料庫相關知識

在 MySQL 5.6.14 環境中執行 SQL 語句時,可能會遇到以下錯誤:

ERROR 1665 (HY000): Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.

錯誤原因分析

當 InnoDB 存儲引擎的事務隔離級別設定為 READ COMMITTED 或 READ UNCOMMITTED 時,InnoDB 強制使用行級日誌記錄。然而,若全域 binlog_format 設定為 STATEMENT 模式,兩者產生衝突,導致無法寫入二進制日誌,從而拋出此錯誤。

解決方案(無需重啟 MySQL 實例)

動態調整全域二進制日誌格式為 MIXED 模式,該模式會根據語句類型自動在 Statement 和 Row 之間切換,兼容性最佳:

SET GLOBAL binlog_format = 'MIXED';

執行後,新建立的會話將自動採用 MIXED 格式,錯誤即可解除。建議在配置文件 my.cnf 中同步修改 binlog_format=MIXED,以確保重啟後依然生效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved