Откат MySQL при транзакции с потерянным/разорванным соединением

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

13
задан TMS 30 March 2012 в 08:49
поделиться