NutzCN Logo
精华 Nutz 在Mysql5.5.14默认设置的环境下,insert,update等操作报错
发布于 3224天前 作者 qq_008038e6 2000 次浏览 复制 上一个帖子 下一个帖子
标签:

情况是这样的:Mysql的版本是5.5.14,默认的事务级别是REPEATABLE-READ,然后binlogformat是STATEMENT,那么就算是普通的insert操作都会报这个错误:
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.
如果是使用Trans.exec(Connection.TRANSACTION_REPEATABLE_READ,new Atom() {
public void run() {
//...
}
});
的话,则在事务里面的可以成功insert。
在不修改mysql配置的情况(hibernate试过是可以正常操作的),请问在代码层次有什么方式可以处理这个问题?谢谢~~

7 回复

我是去改mysql配置,如果全部都走事务,太蛋疼了

@wendal 但是为什么普通的insert都会出错呢?另一个系统用的hibernate是可以正常操作的,所以觉得奇怪了。

@qq_008038e6 有自增?如果是的话会跑在事务内

@wendal 是有自增的,那就是这个原因了~~那么就是只能是修改mysql配置了,或者修改源码?没有接口可以设置的吗?

方法一, aop事务
方法二,继承NutDao,覆盖 int org.nutz.dao.impl.DaoSupport._exec(DaoStatement... sts) 方法

@wendal 好的,这个可以~谢谢了~

大哥,我也出现了这个问题,请问怎么解决

添加回复
请先登陆
回到顶部