当前位置: 代码迷 >> 综合 >> MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法
  详细解决方案

MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法

热度:77   发布时间:2024-01-24 16:24:17.0

在运行数据库某一语句的时候(数据量大概有一亿条),运行的特别慢,可能是我自己电脑配置不高,因此想删选一些数据但是运行的时候报1205错误。

原因

有会话执行过DML操作,然后没commit提交,再执行删除操作,就锁了。

解决办法

1、先查看数据库的事务隔离级别:

select @tx_isoloation;

MySQL默认的事务隔离级别就是REPEATABLE-READ
2、然后查看当前数据库的线程情况:

SHOW FULL PROCESSLIST;

若没有看到正在执行的很慢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 将自动提交设置为开启。

  相关解决方案