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;