【问题标题】:start two independent transactions with mysql用mysql启动两个独立的事务
【发布时间】:2016-03-16 05:32:33
【问题描述】:

我想用两个独立的事务重新创建脏读异常。我已经启动了两次终端并将两者都连接到我的数据库。我在两者中都使用命令start transaction; 开始了事务。然后我在第一个终端窗口中更新了一个信息,这就是它向我展示的内容:Rows matched: 1 Changed: 1 Warnings: 0。选择此表中的所有数据后,更改就在那里。但是当我试图在第二个终端窗口中显示更改后的数据select * from adress; 时,它并没有显示更改,而是显示了旧数据。

最后我需要证明脏读异常并使用正确的隔离级别避免这种情况发生。

这是我的终端窗口的两个屏幕截图。

交易1:

事务 2:

我做错了什么?

感谢您的帮助, 罗宾

【问题讨论】:

  • 您是否在第一个终端提交了您的交易?
  • 我刚刚在第一个终端中尝试了提交。第二个终端仍然显示旧数据。只有当我提交第二个终端时,数据也是相同的。是不是也意味着两笔交易都结束了?

标签: mysql transactions dirtyread


【解决方案1】:

您需要在第一笔交易中提交更改

https://dev.mysql.com/doc/refman/5.7/en/commit.html

事务的想法是允许您执行一系列操作,这些操作要么全部成功,要么都不能发生。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2014-02-20
    • 2013-09-26
    • 2017-06-29
    相关资源
    最近更新 更多