在mysql jdbc中自动提交会影响所有连接吗?

时间:2011-01-27 21:30:28

标签: mysql jdbc connection-pooling autocommit

使用连接池时 将设置连接的autocommit = false 仅影响此连接?

如果我关闭此连接而不设置autocommit = true 并获得一个新的连接将此连接的策略设置为autocommit = true?

2 个答案:

答案 0 :(得分:1)

答案是:“取决于使用的连接池”。

但是,如果我是连接池,我会按照初始配置恢复自动提交状态。我认为其他连接池也会这样做。

答案 1 :(得分:0)

测试场景:

  1. set autocommit = false
  2. 使用交易
  3. 关闭连接而不将其设置回autocommit = true
  4. 结果:当重新使用特定连接时,仍然具有autocommit = false (其他新连接具有默认的autocommit = true)。所以,一旦我在数据库端杀死这个连接并再次调用我的代码,只有这个池才能给我一个与默认autocommit = true的新连接。

    结论:它仅影响连接,但请确保在关闭之前将其设置回autocommit = true! (这是基于实际测试而非假设)

    注意:这里也提到了这个行为:http://www.coderanch.com/t/583969/JDBC/databases/Tomcat-connection-pool-auto-commit

    我将JDBC与Tomcat7,Java 1.7,MySQL5.6,Connector / J 5.1一起使用。