問題
在實現數據庫主備同步的時候,owncloud出現了異常。
General error: 1665 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.
解釋
這是因爲,mysql默認的binlog_format是STATEMENT。
從 MySQL 5.1.12 開始,可以用以下三種模式來實現:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),混合模式複製(mixed-based replication, MBR)。相應地,binlog的格式也有三種:STATEMENT,ROW,MIXED。
如果你採用默認隔離級別REPEATABLE-READ,那麼建議binlog_format=ROW。如果你是READ-COMMITTED隔離級別,binlog_format=MIXED和binlog_format=ROW效果是一樣的,binlog記錄的格式都是ROW,對主從複製來說是很安全的參數。
解決方案
方法一
mysql> STOP SLAVE;
Query OK, 0 rows affected (0.02 sec)
mysql> SET GLOBAL binlog_format=ROW;
Query OK, 0 rows affected (0.00 sec)
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
但是這樣只是一次性的,重啓後失效。
方案二
永久生效,需要修改my.ini
# binary logging format - ROW
binlog_format=ROW
參考資料:
網上資源
備註:
轉載請註明出處:http://blog.csdn.net/wsyw126/article/details/73011497
作者:WSYW126