【发布时间】: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");返回假; } 返回真; }