随笔 - 836  文章 - 1 评论 - 40 阅读 - 102万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

复制代码
java.sql.SQLException: Can't call commit when autocommit=true
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:934)
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
 at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1646)

  今天遇到这个问题,使用hibernate的时候报上面的错!

  上网查了下原因,是因为hibernate中使用了,commit()或者rollback(),这两个都需要一个先决条件,就是mysql的自动提交功能要关闭。

  commit()的作用是:提交上一次提交或者回滚后的修改的内容,并释放连接中的相关内容。

  rollback()的作用是:回滚到上一次提交或者回滚时的内容。

  上面两个方法都只能在已禁用自动提交的模式中使用。

  因此,关闭mysql自动提交就可以了。

  在mysql客户端中:

  mysql>select @@autocommit;

  查看是否开启了自动提交,如果为1,表明开启了。如果是0,表明关闭。

  可以采用下面的方式,进行关闭。

  mysql>set autocommit=0;
复制代码

 

posted on   lshan  阅读(607)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示