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

MySQL Binlog 報錯「Unsafe statement」原因與解決:多唯一鍵表配合 INSERT ON DUPLICATE KEY UPDATE

     編輯:MySQL 資料庫相關知識

錯誤現象

[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.
INSERT... SELECT... ON DUPLICATE KEY UPDATE is unsafe...

根因

表擁有兩個或以上唯一鍵,BINLOG_FORMAT=STATEMENT 時,INSERT ... ON DUPLICATE KEY UPDATE 依賴存儲引擎檢查鍵的順序,順序不確定,導致主備數據不一致風險。

解決方案

  1. 改 BINLOG_FORMAT=ROW 或 MIXED(推薦)
  2. 或重寫 SQL,避免多唯一鍵衝突邏輯

配置修改

[mysqld]
binlog_format=MIXED

重啟生效,或運行 SET GLOBAL binlog_format=MIXED;(新會話生效)。

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