Mysql Lock wait timeout exceeded; try restarting transaction的問題


今天在后台跑任務的時候,發現了數據庫報錯1205 - Lock wait timeout exceeded; try restarting transaction。問題原因是因為表的事務鎖,以下是解決方法:

我需要操作的表為zd2_hkmx,所以我重點找這張表相關的進程和事務:

說明一下,解決問題是需要數據庫的root用戶的

-- 查找表zd2_hkmx的相關的事務(與解決問題關系不大,只是方便查看)
select * from information_schema.innodb_trx where trx_query like '%zd2_hkmx%';
-- 查找zd2_hkmx的相關的進程(與解決問題關系大)
select * from information_schema.processlist where info like 'insert%zd2_hkmx%';

建議再不知道哪些鎖的情況下,先把where去掉,然后加上自己的where。

-- 生成關閉進程sql
select concat('kill ',id,';') from information_schema.processlist where info like 'insert%zd2_hkmx%';

將上面的sql執行結果(生成一堆sql)拷出來,執行之后,問題應該就解決了。

同理,如果要讓某個庫解除所有占用,則需要關閉相關的進程:

select concat('kill ',id,';') from information_schema.processlist where db='mydatabase' ;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM