Mysql删除表时锁表

今天遇到了删除表的语句导致表被锁的情况,kill锁之后再执行还是被锁。
问题描述
1、drop table 的时候导致表被锁,一直再等待
2、SHOW FULL PROCESSLIST ; 能找到等待中的进程
3、kill 相应的锁之后,查询不受影响。
4、再次删除这个表又出现锁表。

问题解决
通过如下语句查询是否有正在执行的事务, 如果有未提交的事务, 可以考虑kill事务或等待事务提交.
SELECT trx_state, trx_started, trx_mysql_thread_id, trx_query FROM information_schema.innodb_trx;
查询到一个正在执行的事务,kill掉之后执行删除表操作正常。

总结
debug代码的时候停住了,在navicat中执行的时候其实等待的是代码中的事务,占用到这个表了,这时候删除表一直在等待代码,SHOW FULL PROCESSLIST还查不到这个,然而我忘了,忘了,忘了,一直删不掉,kill事务后把表删了后看到了代码停在在debug。。。。

本文
https://blog.csdn.net/wangwenpeng0529/article/details/104172297
参考
https://blog.csdn.net/robinhoodzz/article/details/80435921

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值