InnoDB / MySQL - 新事务使用SELECT上的旧数据而不是返回更新的数据

时间:2014-02-06 20:35:35

标签: mysql sql jdbc transactions innodb

  1. 开始交易Tx1
  2. Tx1执行SELECT
  3. 提交Tx1
  4. 使用不同的连接
  5. 在不同的会话中开始事务Tx2
  6. Tx2执行SELECT
  7. 更新Tx2中的行
  8. 提交Tx2
  9. 开始新的交易,Tx1
  10. 执行select - 从步骤2获取结果(??)
  11. 提交Tx1
  12. 开始交易Tx1
  13. 执行select - 获取CORRECT结果,即从Tx2
  14. 提交的更新

    非常困惑......怎么会发生这种情况?它可靠而持续地发生。

1 个答案:

答案 0 :(得分:0)

如果事务隔离级别设置为REPEATABLE READ,则会发生这种情况。将事务隔离级别设置为READ COMMITTED,一切都是hunky dory。没有真正解释为什么(必须是某种BEGIN TRANSACTION徘徊?)