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

1、臨時解決辦法:mysql

執行mysql命令:show full processlist;sql

而後找出插入語句的系統id數據庫

執行mysql命令:kill idsession

 

orm

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

show full processlist;ssl

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

再查看事物表:io

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

查找對應的id,而後kill id的值便可;

 

2、最終解決方案:

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{}中關閉鏈接。

相關文章
相關標籤/搜索