Когда innodb_lock_wait_timeout игнорируется? - PullRequest
1 голос
/ 20 сентября 2010

В связи с другими моими вопросами у меня возник странный случай классического исключения взаимоблокировки: Причина: java.sql.BatchUpdateException: Обнаружена тупиковая ситуация при попытке получить блокировку; попробуйте перезапустить транзакцию. blablalbla ...

Код идентифицирован, и действительно, можно зайти в тупик. Дело в том, что я получаю исключение немедленно. Я установил для переменной "innodb_lock_wait_timeout" значение 1 час (3600). Но все же исключение приходит сразу.

Итак ... что за имя г * д происходит?

1 Ответ

3 голосов
/ 30 ноября 2010

Вы попали в тупик. Переменная lock_wait_timeout показывает, как долго запрос будет ожидать блокировки до истечения времени ожидания - не то же самое.

Из руководства: Тайм-аут в секундах, в течение которого транзакция InnoDB может ожидать блокировки строки, прежде чем отказаться. Значение по умолчанию составляет 50 секунд. Транзакция, которая пытается получить доступ к строке, заблокированной другой транзакцией InnoDB, будет зависать не более этого количества секунд, прежде чем выдать следующую ошибку:

Вы бы увидели это, если бы сбили тайм-аут. У вас правильный тупик, который нужно исправить. ОШИБКА 1205 (HY000): превышено время ожидания блокировки; попробуйте перезапустить транзакцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...