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