1. 程式人生 > >mysql Lock wait timeout exceeded; try restarting transaction

mysql Lock wait timeout exceeded; try restarting transaction

碰到一個線上問題,在此記錄下

現象:

測試人員發現在做一個操作時報如下異常:

 Lock wait timeout exceeded; try restarting transaction

解決辦法

執行以下sql:

SELECT * FROM information_schema.INNODB_TRX;

SELECT * FROM information_schema.INNODB_LOCKS;

SELECT * FROM information_schema.INNODB_LOCK_WAITS;

結果:

檢視 INNODB_TRX 中  LOCK WAIT 狀態 的記錄

檢視 INNODB_LOCKS 中  當前記錄,發現有兩條 加鎖

檢視 INNODB_LOCK_WAITS 中  當前鎖依賴資訊,發現在等待168774808 這個事務的1107539082 這個執行緒,

也就是上面紅框鎖記錄。

當前這個執行緒在INNODB_TRX表中可以檢視到

將此執行緒kill掉就可以了

kill  1107539082;

但關鍵是沒有找到這個執行緒為什麼加鎖,並沒有釋放的原因。