【问题标题】:in mysql jdbc does auto commit affect all connections?在 mysql jdbc 中,自动提交会影响所有连接吗?
【发布时间】:2011-06-16 20:45:38
【问题描述】:

当使用连接池时, 将设置连接的自动提交 = false 只影响这个连接?

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

【问题讨论】:

    标签: mysql jdbc connection-pooling autocommit


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      测试场景:

      1. 设置自动提交=false
      2. 使用事务
      3. 关闭连接而不将其设置回 autocommit=true

      结果:当这个特定的连接被重用时,它仍然有 autocommit=false(其他新的连接有默认的 autocommit=true)。因此,一旦我在数据库端终止 this 连接并再次调用我的代码,池才会为我提供默认自动提交 = true 的新连接。

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

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

      我在 Tomcat7、Java 1.7、MySQL5.6、Connector/J 5.1 中使用 JDBC。

      【讨论】:

        猜你喜欢
        • 2011-03-23
        • 2017-05-24
        • 1970-01-01
        • 2014-04-06
        • 1970-01-01
        • 2019-06-24
        • 1970-01-01
        • 2019-07-30
        • 2023-03-08
        相关资源
        最近更新 更多