mysql 事務未提交導致死鎖 Lock wait timeout exceeded; try restarting transaction 解決辦法


鎖表問題提示:Lock wait timeout exceeded; try restarting transaction

解決鎖表方法

查詢數據庫阻塞的進程
SELECT * FROM information_schema.innodb_trx

主要看箭頭指向的這幾個字段,如果有阻塞數據(不為0的就是阻塞的),找到后在根據下圖這個字段:try_mysql_thread_id 作為這條數據的主鍵id執行這個sql進行刪除: kill id ;(殺死對應id的進程).假設這里try_mysql_thread_id=進程id 的這條數據是鎖了。我們執行 kill 進程id 刪除就不在鎖表了

常用鎖表命令

//查看進程id,然后用kill id殺掉進程
show processlist;
SELECT * FROM information_schema.PROCESSLIST;
//查詢正在執行的進程
SELECT * FROM information_schema.PROCESSLIST where length(info) >0 ;

//查詢是否鎖表
show OPEN TABLES where In_use > 0;

//查看被鎖住的
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
//等待鎖定
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
//殺掉鎖表進程
kill 12041


免責聲明!

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



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