在做修改陳述句的時候,資料庫拋出Lock wait timeout exceeded; try restarting transaction這樣的例外,提示錯誤的意思很明顯,是因為這條陳述句被鎖住了,所以釋放這個鎖,
解決方案:
1.通過sql: SELECT * FROM information_schema.INNODB_TRX 來查看當前所運行的所有事務,通過查詢表,發現有一條事務記錄一直處于RUNNING的狀態
2.再次通過sql:SELECT * FROM information_schema.`PROCESSLIST` WHERE id = "trx_mysql_thread_id",”trx_mysql_thread_id“為 INNODB_TRX 表中的欄位,通過PROCESSLIST來查找被鎖的陳述句,PROCESSLIST這張表保存了MySql服務器所有資料庫的資訊,如資料庫名,資料庫的表,表欄的資料型別與訪問權限等,
3.排查出問題所在后,即可在資料庫控制臺通過 KILL ID 命令殺死這條事務執行緒,應用就能恢復正常,ID 為 PROCESSLIST 表中的ID欄位
出現這種情況的原因:手動開啟事務后未提交,發生例外時未回滾,就會導致事務一直處于RUNNING狀態,其他事務無法獲取鎖而等待超時,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/179787.html
標籤:其他
上一篇:關于mysql 出現鎖等待mysql Lock wait timeout exceeded; try restarting transaction的問題
下一篇:Spring Boot:application/x-www-form-urlencoded;charset=UTF-8‘ not supported
