Can't call commit when autocommit=true(转)

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;

http://www.cnblogs.com/xing901022/p/4183180.html

Can't call commit when autocommit=true(转)

时间: 2024-10-07 09:09:50

Can't call commit when autocommit=true(转)的相关文章

【Mysql】—— 报错:Can't call commit when autocommit=true

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.jav

MySQL Study之--MySQL关闭自动commit(autocommit)

MySQL Study之--MySQL关闭自动commit(autocommit)      对于mysql来讲,在事务处理时,默认是在动提交的(autocommit),以下方法可以自动关闭autocommit: 案例分析: 1.在mysql登录环境下修改 [[email protected] soft]# mysql -u root -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or \g.Your M

mysql数据库在Linux和windows下免安装实现以及框架开发碰到的问题

2017年7月23号下午5:20分,上周我根据自己的实际情况,总结了mysql数据库在windows系统下和linux系统下免安装版本的实现,以及在项目开发中遇到的数据库报错,今天整理出来,以供日后学习之用,同时,我给自己制定了一个计划,每周日会将自己本周碰到的一些问题记录下来,在周日整理出来发布在博客上面,2017年7月23号是我的第一周,我要坚持10年,卢小朋说到做到,加油! 一.linux安装说明 说明 mysql-5.7.14-linux.zip部署包支持在CentOS 6.x/7.x

webmagic采集CSDN的Java_WebDevelop页面

项目中使用到了webmagic,采集论坛一类的页面时需要一些特殊的配置.在此记录一下 先来看看我要采集的页面 点击第2页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=2 点击尾页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=758 也就是说我们需要采集的范围是从2到758页 这样我们就可以通过自己拼接一个url来模拟所有 的连接了代码如下: <span st

c3p0 一个数据库链接的例子

首先需要准备三个依赖包 c3p0-0.9.5.2.jar.mchange-commons-java-0.2.11.jar.mysql-connector-java-5.1.47.jar 下载链接 https://files.cnblogs.com/files/ruber/lib.rar 1 public class testMysql implements myRoot{ 2 private ComboPooledDataSource dataSource = null; 3 // privat

Mybatis中在关闭连接之前为什么要设置自动提交为true?

public void close() throws SQLException { if (connection != null) { resetAutoCommit(); if (log.isDebugEnabled()) { log.debug("Closing JDBC Connection [" + connection + "]"); } connection.close(); } } mybatis中的JdbcTransaction中的close方法,

关于PooledDB使用autocommit的方法

在Python里,普通使用数据库,可以通过调用connection里的autocommit函数来设置是否打开自动更新 self._db = MySQLdb.connect(**self._db_args) self._db.autocommit(True) 但是如果使用了线程池PooledDB,则不能使用线程池返回的connection来设置,而是在创建线程池的时候来进行设置 self.__pool = PooledDB(creator=MySQLdb, mincached=1 , maxcac

FragmentTransaction的commit和commitAllowingStateLoss的区别

1.什么是FragmentTransaction? 使用Fragment时,可以通过用户交互来执行一些动作,比如增加.移除.替换等. 所有这些改变构成一个集合,这个集合被叫做一个transaction. 可以调用FragmentTransaction中的方法来处理这个transaction,并且可以将transaction存进由activity管理的back stack中,这样用户就可以进行fragment变化的回退操作. 可以这样得到FragmentTransaction类的实例: Fragm

FragmentTransaction的commit和commitAllowingStateLoss的差别

1.什么是FragmentTransaction? 使用Fragment时.能够通过用户交互来运行一些动作.比方添加.移除.替换等. 全部这些改变构成一个集合,这个集合被叫做一个transaction. 能够调用FragmentTransaction中的方法来处理这个transaction,而且能够将transaction存进由activity管理的back stack中,这样用户就能够进行fragment变化的回退操作. 能够这样得到FragmentTransaction类的实例: Fragm