显示 mysql myisam 锁

显示 mysql myisam 锁

当删除或重命名具有 myisam 存储引擎的表时,我意识到它正在等待表元数据锁,但是,显示完整进程列表并没有显示有问题的查询。有什么想法吗?

| 462 | 根 | xxx.xxx.xxx.xx:54658 | mydb | 睡眠 | 1162 | | NULL |
| 465 | root | localhost | mydb | 查询 | 0 | NULL | 显示完整进程列表 |
| 466 | root | localhost | mydb | 查询 | 125 | 等待表元数据锁 | alter table mytable rename to mytable_junk |

答案1

如果您使用的是 MySQL 5.5,有一个错误报告

事实上,单击此处查看元数据锁定的解释. 它旨在保护表不被在事务中间执行 DDL 语句。

奇怪的是你在 MyISAM 表上得到了这个信息。

答案2

我试图按如下方式转换表排序规则:

 alter table xxx convert to character set utf8 collate utf8_unicode_ci;

然后我注意到在“显示完整进程列表”上请求被冻结在以下状态“等待表元数据锁定”

为了解决这个问题,我并行打开了另一个控制台并启动了以下 SQL 命令:

flush tables

问候

相关内容