Мне нужно заставить сервер 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 отключается.