【问题标题】:Can't see inserted data from MySQL immediately无法立即从 MySQL 中看到插入的数据
【发布时间】:2011-10-05 01:29:10
【问题描述】:

我正在使用 JDBC。我的测试应用程序将一些数据插入 MySQL,然后通过相同的连接查询它。我有四台计算机,一台是 MySQL 服务器,三台是 UBuntu 桌面。在一个 UBuntu 桌面中,我的测试应用程序运行到这个问题,但我在其他 UBuntu 桌面上没有发现这个问题。 另外,如果我在插入后创建一个新的连接来查询数据,我可以找到数据。版本 mysql-connector-java库是5.1.17,我试过5.1.18,问题依旧。

【问题讨论】:

  • 您是否使用正确的 JDBC 习惯来打开和关闭 try-finally 块中的所有资源?您是否使用连接池,如果是,是哪个?您在其中一台机器上遇到的问题听起来好像连接从未提交/关闭。
  • 这个连接是自动提交还是你在读写之间手动提交?如果没有,那么提交可能会有所帮助。

标签: mysql sql jdbc


【解决方案1】:

MySQL 的默认隔离级别是“REAPEATABLE READ”,这意味着如果您没有在查询工具中使用自动提交,除非您通过发出 COMMIT 或 ROLLBACK 结束您自己的事务,否则您将看不到来自其他事务的已提交数据。

创建新连接后可以看到数据这一事实也指向了这个方向。

所以你有两个选择

  1. 将“查询”连接的隔离级别更改为“已提交读”
  2. 在运行 SELECT 之前在查询工具中发出 COMMIT(或 ROLLBACK)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多