[解决]Lock wait timeout exceeded; try restarting transaction MYSQL行锁怎么破?

问题

更新某条数据时出现以下错误,就一直阻塞在那里,直到timeout,出现以下错误
[40001][1205] Lock wait timeout exceeded; try restarting transaction

由此可见遇见锁啦,怎么破?唯有解锁。

解决

看看自己有哪条sql正在waiting 什么的,在那给卡住的。
show processlist ;
在这里插入图片描述
如果这样看不出来。使用
当前运行的所有事务
SELECT * FROM information_schema.INNODB_TRX;
当前出现的锁
SELECT * FROM information_schema.INNODB_LOCKs;
锁等待的对应关系
SELECT * FROM information_schema.INNODB_LOCK_waits;
观察事务表INNODB_TRX里是否有正在锁定的事务线程,再看看在show processlist是否有对应ID在sleep。
如果是,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉。
找到对应的id,干掉就完事啦。
kill {id}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值