Разблокировка «зависшей» таблицы MySQL: устранение неполадок «Превышено время ожидания блокировки»
При обнаружении сообщения «Превышено время ожидания блокировки; попробуйте перезапустить» «транзакция» при работе с таблицей InnoDB в MySQL, вполне вероятно, что транзакция зависла. Вот как исправить таблицу и устранить зависшую транзакцию:
1. Определите зависшую транзакцию:
Выполните следующую команду в интерфейсе командной строки MySQL или через phpMyAdmin:
SHOW PROCESSLIST;
Появится список запущенных нити. Ищите потоки с длительным временем выполнения или те, которые находятся в состоянии «Сон». Соответствующий идентификатор потока будет отображаться в столбце «Id».
2. Завершите застрявший поток:
Как только застрявший поток будет идентифицирован, завершите его с помощью следующей команды в интерфейсе командной строки:
KILL;
Замените
3. Перезапустите транзакцию (необязательно):
Если транзакция все еще активна, перезапустите ее, чтобы снять все блокировки, которые она может удерживать. Это можно сделать, выполнив следующую команду:
START TRANSACTION; COMMIT;
4. Удалить индекс (если применимо):
Если вы ранее пытались удалить индекс в затронутой таблице, но это не удалось из-за блокировки, попробуйте удалить его снова после завершения зависшего потока и перезапуска транзакции. .
ALTER TABLEDROP INDEX ;
Выполнив эти действия, вы можете разблокировать зависшую таблицу и устранить ошибку «Превышено время ожидания блокировки». Не забывайте регулярно проверять работающие потоки, чтобы выявлять и прекращать любые потенциальные зависшие транзакции, чтобы предотвратить подобные проблемы в будущем.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3