事务提交的时候出现的大问题

ningshuaichen 2018-01-17 06:02:17
各位大神,我们系统遇到了一个很有挑战性的问题,就是在事务提交的时候报这个异常信息:org.springframework.transaction.TransactionSystemException: Could not commit JDBC transaction; nested exception is java.sql.SQLException: Can't call commit when autocommit=true ,之前还好好的,可是今天就一直出现了,希望大神们给一些好的建议,感激不尽。
...全文
747 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHOU西口 2018-01-18
  • 打赏
  • 举报
回复
既然是spring托管事务,那么只好检查代码,有没有对事务的多余操作。
maradona1984 2018-01-18
  • 打赏
  • 举报
回复
个人建议你搜索下你的代码中是否有调用setAutoCommit这个方法,但spring开启事务的时候会修改setAutoCommit(false);从你描述来看,也不是必现的,可以先检查代码是否有人做坏事,其次检查数据源是用的哪个库,百度下是否存在bug
anonyomusx 2018-01-18
  • 打赏
  • 举报
回复
catch一下就好
ningshuaichen 2018-01-18
  • 打赏
  • 举报
回复
各位高手,我们用的是mysql,后台框架用的是mybatis与spring,目前代码是用spring控制的事务,然后这是线上生产环境出现的问题,近段出现的很频繁,异常信息中甚至连查询方法也报了这个错。
weixin_39670158 2018-01-17
  • 打赏
  • 举报
回复
JDBC中默认autocommit为true 即对于Connection对象产生的Statement对象(PreparedStatement) 对数据库提交的任何一条SQL都会立刻生效。 在JDBC中处理处理步骤主要有三步 1.Connection对象setAutoCommit(false)关闭自动提交模式 2.Connection对象调用commit()处理事务 3.Connection对象调用roolback()进行回滚 回到你的问题:Can't call commit when autocommit=true 说明启动了自动提交模式,这种情况下肯定是不能进行事务的,见上述事务处理步骤1。 解决方法: 在IDE中Clean项目 如果是在 eclipse中的话 则是Project->Clean 若Clean大法不行的话肯定是你配置有问题,要看你用的是哪种配置方式,网上找找标准的配置,逐一比对。
ZHOU西口 2018-01-17
  • 打赏
  • 举报
回复
LZ用的mysql? mysql事务默认是自动提交的。
oyljerry 2018-01-17
  • 打赏
  • 举报
回复
因为数据库设置了autocommit,能跟事务冲突。把autocommit false
沁海棠 2018-01-17
  • 打赏
  • 举报
回复
没遇到过这种情况.看一下你spring的配置,如果你昨天还是好好,今天什么都没做,突然不能用了,你刷新一下项目缓存,或者在配置文件中,随便加点东西,再删掉.再试试

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧