n1ro°
RU

Ошибки · Решение

MySQL error 1205: Lock wait timeout exceeded

Нужный row/table lock удерживался другой транзакцией дольше разрешённого времени.

Редакция N1RO · Проверено

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

MySQL 1205 означает, что транзакция слишком долго ждала блокировку и превысила lock wait timeout. Сверьте код с официальной поддержкой производителя и выполните только безопасные шаги.

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

Нужный row/table lock удерживался другой транзакцией дольше разрешённого времени.

Возможные причины

  • Долгая транзакция не делает COMMIT/ROLLBACK.
  • Несколько процессов обновляют одни и те же hot rows.
  • Большой UPDATE держит locks дольше, чем рассчитано приложением.

Что проверить

  • Снимите `SHOW ENGINE INNODB STATUS` и данные performance_schema о waits.
  • Найдите blocking transaction и её возраст.
  • Сопоставьте порядок обновления сущностей между конкурирующими запросами.

Безопасные шаги

  1. Сократите размер/длительность транзакций и устраните idle-in-transaction поведение.
  2. Оптимизируйте индексы, чтобы UPDATE не блокировал лишние строки.
  3. Увеличивайте timeout только когда ожидание действительно является нормальным сценарием.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если 1205 повторяется на одном business flow, нужен анализ lock graph и порядка транзакций под реальной конкуренцией.

Похожие ошибки

  • /errors/mysql-error-1005-cant-create-table/
  • /errors/mysql-error-1040-con-count-error/
  • /errors/mysql-error-1048-bad-null-error/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.