Ошибки · Решение
MySQL error 1205: Lock wait timeout exceeded
Нужный row/table lock удерживался другой транзакцией дольше разрешённого времени.
Короткий ответ
MySQL 1205 означает, что транзакция слишком долго ждала блокировку и превысила lock wait timeout. Сверьте код с официальной поддержкой производителя и выполните только безопасные шаги.
Что означает ошибка
Нужный row/table lock удерживался другой транзакцией дольше разрешённого времени.
Возможные причины
- Долгая транзакция не делает COMMIT/ROLLBACK.
- Несколько процессов обновляют одни и те же hot rows.
- Большой UPDATE держит locks дольше, чем рассчитано приложением.
Что проверить
- Снимите `SHOW ENGINE INNODB STATUS` и данные performance_schema о waits.
- Найдите blocking transaction и её возраст.
- Сопоставьте порядок обновления сущностей между конкурирующими запросами.
Безопасные шаги
- Сократите размер/длительность транзакций и устраните idle-in-transaction поведение.
- Оптимизируйте индексы, чтобы UPDATE не блокировал лишние строки.
- Увеличивайте 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 не диагностировала ваш конкретный случай.