【问题解决:死锁】Lock wait timeout exceeded; try restarting transaction的问题

【问题解决:死锁】Lock wait timeout exceeded; try restarting transaction的问题

执行数据删除操作时一直超时并弹出Lock wait timeout exceeded; try restarting transaction错误

 

解决办法

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

select @@tx_isoloation;

REPEATABLE-READ // MySQL默认的事务隔离级别就是REPEATABLE-READ

 

2.查询数据库线程情况,看是否有执行很慢的SQL

SHOW FULL PROCESSLIST;

再去查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程,看看ID是否在show full processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉。

SELECT * FROM information_schema.INNODB_TRX;

 

3.杀死进程

KILL 21517;

 

4.接着执行之前的操作就OK了

 

注意:MySQL是自动提交事务的(即:autocommit=1),可以使用 show variables like 'autocommit' 或者 select @@autocommit 查看当前数据库是否为自动提交事务;若autocommit的值不是1还可以使用set global autocommit = 1 将自动提交设置为开启。 --------------------- 本文来自 it_shine 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/mayor125/article/details/76186661?utm_source=copy

©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值