Mysql錯誤: Lock wait timeout exceeded 解決辦法


一、臨時解決辦法:

執行mysql命令:show full processlist;

然后找出插入語句的系統id

執行mysql命令:kill id

 

首先,查看數據庫的進程信息:

show full processlist;

/*結果略,主要看id列的值*/

再查看事物表:

SELECT * FROM information_schema.INNODB_TRX\G;
 /*結果略,注意結果中的trx_mysql_thread_id部分的值*/

查找對應的id,然后kill id的值即可;

 

二、最終解決方案:

1.檢查mysql是否開啟事物自動提交,mysql默認是自動提交的

可以用以下命令查看:

 select @@autocommit;
值為1就是自動提交,如果你的不是1,但你又想要自動提交,那么設置的命令是:

set global autocommit=1;
 

表數據量也不大,按照普通的情況來說,簡單的update應該不會造成阻塞的,mysql都是autocommit,不會出現update卡住的情況

 

去查看下autocommit的值。如果值為0 導致事物沒有提交
mysql> select @@autocommit;
 +--------------+
 | @@autocommit |
 +--------------+
 | 0 |
 +--------------+
 1 row in set (0.00 sec)

 

2.檢查應用程序是否哪里有問題

  出現該問題大多數是因為出現死鎖或者connection/session沒有關閉造成的,去檢查執行該sql的語句,檢查是否有finally{}中關閉連接。

 


免責聲明!

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



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