Мне нужно сделать 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 client mysql --skip-reconnect на обоих клиентах. Я попробовал это, используя один сервер и два клиента в сети. Я отключил сеть физически (отсоедините кабель) после строки SELECT ... FOR UPDATE;. Мне нужно, чтобы другие клиенты могли использовать tblone для транзакции (заблокировать ее, обновить) немедленно, и для этого я думаю, что сервер должен отменить транзакцию для клиента A после того, как Клиент А отключится.