mysql鎖住 Lock wait timeout exceeded; try restarting transaction


 

方案一

在mysql中數據庫information_schema中查詢下面三張表

select * from innodb_trx; ## 當前運行的所有事務

select * from innodb_locks; ## 當前出現的鎖

select * from innodb_lock_waits; ## 鎖等待的對應關系

 

 在innodb_trx中找到被鎖線程的id,kill掉

 kill xxxx

 

 

方案二、根據命令show processlist查詢起因

命令show processlist詳解

或者使用select * from information_schema.`PROCESSLIST`;進行查詢

 

1、id:標識

2、User: 顯示當前用戶,如果不是 root ,這個命令就只顯示你權限范圍內的 sql 語 句

3、host:顯示這個語句是從哪個 ip 的哪 個端口上發出的,可以用來追蹤出問題語句的用戶

4、db:顯示這個進程目前連接的是 哪個數據庫

5、Command :顯示當前連接的執行的命令,一般就是休眠( sleep ),查詢( query ),連接( connect ).

6、Time:此這個狀態持續的時間,單位是秒

7、State列:顯示使用當前連接的 sql 語句的狀態,很重要的列,后續會有所有的狀態的描述。請注意, state 只是語句執行中的某一個狀態,一個 sql 語 句,以查詢為例,可能需要經過 copying to tmp table , Sorting result  , Sending data 等狀態才可以完成。

8、Info:顯示這個 sql 語 句,因為長度有限,所以長的 sql 語句就顯示不全,但是是一個判斷問題語句的重要依據

 

 


免責聲明!

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



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