出現問題有點不明白了就是有時在插入數據時會碰到ERROR 1205 (HY000):Lock wait timeout exceeded; try restarting transaction問題了,下面給各位介紹解決.
臨時解決辦法:
執行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的值即可;
mysql默認是自動提交的,可以用以下命令查看:select @@autocommit;值為1就是自動提交,如果你的不是1,但你又想要自動提交,那么設置的命令是:set global autocommit=1;表數據量也不大,按照普通的情況來說,簡單的update應該不會造成阻塞的,mysql都是autocommit,不會出現update卡住的情況,去查看下autocommit的值.
- mysql> select @@autocommit;
- +--------------+
- | @@autocommit |
- +--------------+
- | 0 | --Vevb.com
- +--------------+
- 1 row in set (0.00 sec)
- mysql>
看到亮閃閃的0,這個設置導致原來的update語句如果沒有commit的話,你再重新執行update語句,就會等待鎖定,當等待時間過長的時候,就會報ERROR 1205 (HY000):Lock wait timeout exceeded;try restarting transaction的錯誤.
所以趕緊commit剛才執行的update語句,之后 set global autocommit=1;
新聞熱點
疑難解答