MySQL删除或改表时出现Waiting for table metadata lock

当我们使用客户端执行改表的相关操作, 如ALTER TABLE 或DROP TABLE 时, 由于某些原因在执行过程中意外退出了客户端, 再次进入执行时可能会一直卡住, 执行show processlist时, 出现Waiting for table metadata lock, 原因:有事务未提交.

可以看到状态为Query的进程, 正在执行的命令是drop table, 先kill掉所在进程487209:

kill 487209

然后查询未提交的事务:

select * from information_schema.innodb_trx;

MySQL删除或改表时出现Waiting for table metadata lock_第1张图片

确实有一条记录, 但是字段太多不好看, 换个显示格式, 后面加\G

select * from information_schema.innodb_trx\G

这就就好看多了: 

MySQL删除或改表时出现Waiting for table metadata lock_第2张图片

这样就好看多了, 直接kill掉对应的trx_mysql_thread_id即可:

kill 485434;

再次执行改表语句, OK

你可能感兴趣的:(数据库,mysql,数据库,java)