Java 默认事务级别read committed对binlog_format的需求

2014-11-24 00:08:12 · 作者: · 浏览: 12

java.sql.SQLException: 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.


tomcat抛异常如上!


提示是事务级别在read committed和read uncommitted的时候


binlog必须设置为row格式


这个是java设置的一个局限性,java默认的事务级别是read committed,而mysql默认设置的binlog_format=statement。


将binlog_format设置为mixed


set global binlog_format=mixed;


过段时间,异常仍在!


设置成row


set global binlog_format=row;


问题解决!


或:


mysql> SET SESSION binlog_format = 'ROW';


mysql> SET GLOBAL binlog_format = 'ROW';


注意: 若手动修改linux下面/etc/my.cnf : binlog_format = row , 需要在重启mysql是注意配置是否生效,本人测试比较难生效。