Mysql删除表时锁表

  • Post author:
  • Post category: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



版权声明:本文为wangwenpeng0529原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。