- N +

【Mysql】异常:Can't call commit when autocommit=true 详解

【Mysql】异常:Can't call commit when autocommit=true 详解原标题:【Mysql】异常:Can't call commit when autocommit=true 详解

导读:

错误信息 java.sql.SQLException: Can not call commit when ...

文章目录 [+]

错误信息

 java.sql.SQLException: Can not 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)

错误原因

       原因就是mysql已经配置了自动提交事物,而你又手动的重复提交事物

       commit()或者rollback(),这两个都需要一个先决条件,就是mysql的自动提交功能要关闭。

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

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

  上面两个方法都只能在已禁用自动提交的模式中使用,重复提交会报如上异常。 

如何关闭mysql  autocommit自动提交

 对于mysql来讲,在事务处理时,默认是自动提交的(autocommit),以下方法可以自动关闭autocommit;
 
 
 
 mysql> show variables like %autocommit%;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |                ;;默认autocommit是开启的
+---------------+-------+
1 row in set (0.03 sec)

在当前session关闭autocommit:
mysql> set @@session.autocommit=0;
Query OK, 0 rows affected (0.00 sec)




在global级别关闭autocommit:
mysql> set @@global.autocommit=0;
Query OK, 0 rows affected (0.01 sec)


本文标题:【Mysql】异常:Can't call commit when autocommit=true 详解
本文链接:http://www.kyjszj.com/sjkzq/32.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

    评论列表 (暂无评论,共2683人参与)参与讨论

    还没有评论,来说两句吧...