Ошибка 1205: таблица все еще заблокирована через много времени
У меня был запрос, который я выполнял в Mysql Workbench на своем компьютере, база данных находится на удаленном компьютере.
Через некоторое время я получил ошибку 2013 года (Потерянное соединение с сервером MySQL во время запроса), не было никакого эффекта запроса. Позже я попробовал несколько разных запросов и всегда получал:
Error Code: 1205. Lock wait timeout exceeded; try restarting transaction
Означает ли это, что в запросе, который я выполнил (во время которого было потеряно соединение), таблица по-прежнему заблокирована, если да, то как я могу ее освободить Прошло три часа с момента первого запроса.
1205 admin_pw BSN-176-177-215.dial-up.dsl.siol.net:9054 admin_pw Query 11217 Sending data DELETE n1 FROM mm_ads_fields_values n1, mm_ads_fields_values n2
WHERE n1.id < n2.id
AND n1.aid = n2
1206 admin_pw BSN-176-177-215.dial-up.dsl.siol.net:9100 admin_pw Sleep 415
1208 admin_pw BSN-176-177-215.dial-up.dsl.siol.net:9281 admin_pw Query 622 Locked ALTER IGNORE TABLE mm_ads_fields_values ADD UNIQUE KEY idx1(aid,value)
1308 admin_pw localhost Sleep 30
1309 admin_pw BSN-176-177-215.dial-up.dsl.siol.net:16938 admin_pw Query 0 show processlist
Выходные данные show show processlist, первый запрос, который получил ошибку 2013 года, - это запрос с идентификатором 1205.
1 ответ
Хорошо, используя вывод из show processlist, вы можете увидеть, что PID 1208 заблокировал вашу таблицу. В песочнице вы можете просто все убить и вернуться к работе. Но в реальной жизни вы хотели бы убить PID, который имеет блокировку, и затем выполнить оставшиеся запросы. Используя приведенный выше вывод, вы должны выполнить следующую инструкцию как root в MySQL
mysql> kill 1208;
Запустите это и посмотрите, завершены ли другие ваши запросы. Если они не и заблокировать еще раз. Повторите описанную выше процедуру, а затем снова посетите ваш SQL.