1. 程式人生 > >mysql 出現:Error 1205: Lock wait timeout exceeded; try restarting transaction

mysql 出現:Error 1205: Lock wait timeout exceeded; try restarting transaction

哈哈,沒想到人生第一次遇到mysql的等待鎖。幸會幸會

前端頁面還沒做好,現在所有介面都是測試直接測。訪問的是我的本機,沒有放在伺服器跑。

測試同事以為我電腦執行的程式太多,導致測試的時候查詢很慢,一直處於等待狀態。

後來檢視日誌發現,報錯如下:

Error 1205: Lock wait timeout exceeded; try restarting transaction

為什麼會出現這個問題?

因為我需要對A表修改成功後再修改B表。如果其中一個失敗,那麼事務回滾。在事務回滾以後沒有把整個函式return掉。

參考了網上各位大佬的做法。

首先:

show procelllist;

檢視當前資料庫對應的

備註:這兩條資料是同一個資料庫的資料。

由此可見,對這同一個資料庫,一個為Query一個為Sleep

執行如下命令

kill 12278;

這個12278對應圖片裡的第一列id,也就是pid。kill掉這個sleep的就可以。