1205: Превышен тайм-аут ожидания блокировки; попробуйте перезапустить транзакцию
MySQLЧто это значит?
Транзакция ждала необходимую блокировку строки в течение innodb_lock_wait_timeout секунд, не смогла её получить и завершилась по тайм-ауту.
Почему возникает?
Другая транзакция долго удерживает блокировку без commit или rollback; простаивающие открытые транзакции, длительные массовые обновления или горячие строки с высокой конкуренцией.
Как исправить
Найдите блокирующую транзакцию: соедините performance_schema.data_lock_waits с data_locks (в старых версиях information_schema.innodb_lock_waits/innodb_trx). Зафиксируйте/откатите блокирующую транзакцию или при необходимости завершите её через KILL <trx_mysql_thread_id>. Делайте транзакции короткими и не оставляйте их простаивать (autocommit/логика приложения). При необходимости настройте innodb_lock_wait_timeout под нагрузку.
Ещё по этой СУБД
- 1045Доступ запрещён для пользователя (using password: YES/NO)
- 1062Дублирующаяся запись для ключа (Duplicate entry)
- 1213Обнаружена взаимоблокировка при попытке получить блокировку; попробуйте перезапустить транзакцию
- 1040Слишком много подключений (Too many connections)
- 1064Ошибка в синтаксисе SQL
- 1146Таблица не существует
- 1054Неизвестный столбец в списке полей