MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法
生活随笔
收集整理的這篇文章主要介紹了
MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在運行數據庫某一語句的時候(數據量大概有一億條),運行的特別慢,可能是我自己電腦配置不高,因此想刪選一些數據但是運行的時候報1205錯誤。
原因
有會話執行過DML操作,然后沒commit提交,再執行刪除操作,就鎖了。
解決辦法
1、先查看數據庫的事務隔離級別:
select @tx_isoloation;MySQL默認的事務隔離級別就是REPEATABLE-READ
2、然后查看當前數據庫的線程情況:
若沒有看到正在執行的很慢SQL記錄線程,再去查看innodb的事務表INNODB_TRX,看下里面是否有正在鎖定的事務線程,看看ID是否在show full processlist里面的sleep線程中,如果是,就證明這個sleep的線程事務一直沒有commit或者rollback而是卡住了,我們需要手動kill掉。
3、發現有id為XXX的sql,需要手動kill掉
kill XXX;4.再執行錯誤出現之前的刪除語句
注意:MySQL是自動提交事務的(即:autocommit=1),可以使用 show variables like 'autocommit' 或者 select @@autocommit 查看當前數據庫是否為自動提交事務;若autocommit的值不是1還可以使用set global autocommit = 1 將自動提交設置為開啟。
總結
以上是生活随笔為你收集整理的MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 逻辑备份导入数据库_mysq
- 下一篇: linux cmake编译源码,linu