MySQL и MariaDB LinuxWindowsmacOS 1205

MySQL: ERROR 1205 — Lock wait timeout exceeded

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Транзакция ждёт блокировку слишком долго. Найдите длительные транзакции, сократите их и проверьте индексы.

В этой статье
  1. Что означает ошибка
  2. Причины и признаки
  3. Пошаговое решение
  4. Если проблема осталась

#Что означает ошибка

1205
Lock wait timeout exceeded

Транзакция ждёт блокировку слишком долго. Найдите длительные транзакции, сократите их и проверьте индексы.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Долгая транзакцияВ случае «MySQL: ERROR 1205 — Lock wait timeout exceeded» проверьте наличие причины «Долгая транзакция» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения.Завершите
Нет индексаВ случае «MySQL: ERROR 1205 — Lock wait timeout exceeded» проверьте наличие причины «Нет индекса» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения.Добавьте. Конкретное действие зависит от проверки причины «Нет индекса», описанной в пошаговой инструкции.
Забытый COMMITВ случае «MySQL: ERROR 1205 — Lock wait timeout exceeded» проверьте наличие причины «Забытый COMMIT» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения.Закройте. Конкретное действие зависит от проверки причины «Забытый COMMIT», описанной в пошаговой инструкции.
Малый таймаутinnodb_lock_wait_timeout.В случае «MySQL: ERROR 1205 — Lock wait timeout exceeded» проверьте наличие причины «Малый таймаут» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения.Настройте. Конкретное действие зависит от проверки причины «Малый таймаут», описанной в пошаговой инструкции.

#Пошаговое решение

  1. Определите причинуВ SQL-консоли MySQL под учётной записью с правами диагностики выполните SHOW FULL PROCESSLIST; и при доступности изучите performance_schema.data_lock_waits вместе с data_locks. Найдите блокирующую и ожидающую транзакцию, сохранив время и таблицу; ошибка 1205 означает ожидание блокировки дольше лимита.
  2. Выполните подходящее исправлениеПроверьте код приложения: транзакция должна быть как можно короче и завершаться COMMIT/ROLLBACK при всех ветвях ошибки. Для UPDATE/DELETE изучите план EXPLAIN и индексы условий, чтобы избежать блокирования лишних строк. Сначала исправляйте запрос на стенде, не увеличивая innodb_lock_wait_timeout автоматически.
  3. Проверьте другие возможные причиныЕсли блокирующая транзакция связана с администрированием, импортом или миграцией, дождитесь её завершения либо согласуйте остановку с владельцем операции. KILL запроса может вызвать долгий откат и потерю незавершённой работы; до вмешательства узнайте владельца и последствия. Увеличение таймаута только откладывает проблему.
  4. Убедитесь в результатеПовторите конфликтовавшую операцию при штатной и параллельной нагрузке и проверьте, что ожидающая транзакция теперь завершается. Сопоставьте задержку и количество 1205 в журнале; не выполняйте повторно операции списания/платежа, пока не известно, была ли предыдущая транзакция зафиксирована.

#Если проблема осталась

Если «MySQL: ERROR 1205 — Lock wait timeout exceeded» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.