我需要让MySQL服务器在客户端断开连接后立即回滚事务,因为每个客户端同时工作。这些问题可以像这样重现(使用innodb表类型)
在客户A上:
START TRANSACTION;
SELECT MAX(ID) FROM tblone FOR UPDATE;
#... then disconnect your connection to the server
在客户B上:
START TRANSACTION;
SELECT MAX(ID) FROM tblone FOR UPDATE;
#... lock wait time out will occur here
我已经设置了MySQL的服务器选项 innodb_rollback_on_timeout
并使用mysql的客户端 mysql --skip-reconnect
在两个客户端。我在网络上尝试使用一台服务器和两台客户端。我之后断开了物理连接网络(拔掉电缆) SELECT ... FOR UPDATE;
线。我需要让其他客户能够使用 tblone
在一个事务上(锁定它,更新它),为了实现这一点,我认为服务器应该在客户端A断开连接之后回滚客户端A的事务。