【问题标题】:MySQL+Java TransactionsMySQL+Java 事务
【发布时间】:2012-05-14 00:08:54
【问题描述】:

我正在开发一个可以在局域网上运行的java应用程序,我今天做测试我遇到了一个问题,当插入一个新数据时,即使在COMMIT之后其他客户端也看不到记录。

我正在使用事务,MySQL INNODB引擎,所以我所做的就是在结束事务时将autoCommit Mode设置为true,然后它就可以工作了。

但是为什么 commit 没有将 autoCommit 模式恢复到原来的状态呢?这很奇怪,因为教程说当回滚或提交时 autoCommitMode 将自动设置为 true。

有什么想法吗?

【问题讨论】:

  • 其他客户端是否刷新了他们的记录集。请记住,它不绑定到底层数据库的记录集。
  • 是的,他们刷新了表格,但没有显示记录,如果另一个客户端关闭应用程序并重新连接到它,那么它就会显示出来。
  • 你在使用“connection.commit();”还是手动执行提交?
  • 刷新记录集时是否关闭记录集并重新运行查询以反映最新数据?换句话说,从查询中得到一个新的结果集?
  • 我的应用程序中的类执行以下操作: public synchronized boolean endTransaction() { try { connection.commit(); System.out.println("事务提交"); } catch (SQLException sexx) { myError(sexx, "22");返回假; } catch (Exception exx) { myError(exx, "23");返回假; } 返回真; }

标签: java mysql


【解决方案1】:

一旦建立连接,所有自动提交模式的更改总是明确进行的。 提交/回滚事务不影响自动提交标志。

如果其他客户端重新连接后看到记录,则表示他身边有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2013-03-25
    相关资源
    最近更新 更多