MySQL查询卡死、无返回结果问题解决
现象
①在Navicat中,修改表结构,点击保存,然后发现Navicat卡住,无法正常退出,且MySQL无数据返回。
②在任务管理器中强制关闭了Navicat后,重复在Navicat中尝试几次,结果仍然一样。
③在MySQL CLI中进行select查询,同样卡住。
分析
起初认为是网络问题,但是想到可能是被堵塞住了。
解决
查询MySQL中的进程:show processlist
。
打开正在进行中的进程列表,发现有Waiting for table metadata lock
,所以初步判定是因为某个操作被堵塞,然后后续操作无法执行,从而引起了这个问题。
从网上的资料看来,可能的原因是有未提交事物,阻塞DDL,继而阻塞所有同表的后续操作;结合自己对此数据库的操作,初步认为是在自己的小项目里面,可能存在上述情况。
查看未提交的事务:select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx\G
执行后,发现确实存在未提交的事务。
kill掉未提交的事务,返回到Navicat,发现 之前卡住的操作已完成。
【参考】
https://blog.csdn.net/benben683280/article/details/78799010
https://blog.csdn.net/u013235478/article/details/68062939
https://www.cnblogs.com/digdeep/p/4892953.html
MySQL查询卡死、无返回结果问题解决