
开始以为数据库引擎出问题,查看数据库引擎没什么问题
查看哪些数据库引擎支持事务:
SHOW ENGINES;
看到InnoDB支持事务
设置关闭数据库的自动事务提交:
SET autocommit =0; SHOW VARIABLES LIKE 'autocommit';
开启事务自动提交:
SET autocommit =1; SHOW VARIABLES LIKE 'autocommit';
转账原始数据:
转账期间获取的是同一个数据库连接,导致事务回滚失败:
Dao方法获取的是新的数据库连接:
con = DbUtils.getConnection();
事务期间不是用同一个数据库连接:
导致事务回滚失败:
数据库用同一个连接:
con = DbUtils.getCourrentConnection();
结果无误啦ヾ(≧▽≦*)o ヾ(≧▽≦*)o
无网络异常转账:
转账成功:
总结: 用到事务的时候,一定要保证事务在同一个数据库连接下操作,否则得到不是正确结果,排查也要花好多时间!!!