关于JFinal中的事务处理

Rajab 发布于 2013/06/03 10:11
阅读 1K+
收藏 0

@JFinal 你好,想跟你请教个问题:

其实我感觉这不是JFinal的事。问题是这样的,我的项目中用到的MySQL,本地环境是5.1, InnoDb, 某个操作需要事务处理,本来想用触发器处理,但是考虑的数据库权限有的服务器不支持,所以就用声明事务@Before(Tx.class)完成了。在本地环境中插入数据没有任何问题(主表插入一条数据,从表同时插入另一条数据)。可是放到服务器上,同样是MySQL 5.1, 结果提示

警告: java.sql.SQLException: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'

一直插入不进去数据。网上搜索了半天,似乎是MySQL的事务的隔离级别的问题,可能需要修改MySQL的配置文件my.ini,对于用别人的服务器这不现实。

请问有没有好的解决办法 ? 有类似问题的同学。

实在不行,我就不声明事务了。估计一般没什么大问题。


加载中
1
缪斯的情人
缪斯的情人
这个真和jfinal无关,和你的服务器环境以及mysql版本有关,目测你的mysql版本5.1.28-系列的,最好的解决办法升级到5.1.30以上,官方的bug反馈:http://bugs.mysql.com/bug.php?id=40360
Rajab
Rajab
确实是这样的。我本地测试环境是5.1, 变量binlog mode也是STATEMENT,可以无异常地建立事务插入数据,放到服务器上就不行了。我不用事务了。
1
本人纯属虚构
本人纯属虚构
我觉得和版本 或者和你没有mysql的完全控制权有关
Rajab
Rajab
确实是。需要修改全局的数据库变量设置,没有可能。 所以我放弃用事务了,反正规模不很小
返回顶部
顶部