MySQL“等待表元数据锁定”挂在1个特定表上

时间:2018-10-19 07:37:58

标签: mysql process blocking

我正在尝试将列添加到特定表。每次我向上或向下运行迁移时,都会弹出一个SLEEP命令并阻止所有操作。就像遇到这个问题的许多其他人一样,我取消了阻止过程,一切都按预期进行。

例如:MySql alter table hangs

我尝试对另一个表运行迁移,没有任何问题。似乎与该特定表有关。

我应该在哪里寻找什么?为什么这个问题会如此持续地发生?

谢谢。

mysql> show processlist;
+-----+------+-----------------+--------+---------+------+---------------------------------+----------------------------------------------+
| Id  | User | Host            | db     | Command | Time | State                           | Info                                         |
+-----+------+-----------------+--------+---------+------+---------------------------------+----------------------------------------------+
| 351 | root | localhost:54691 | database | Sleep   |   25 |                                 | NULL                                         |
| 352 | root | localhost:54692 | NULL     | Sleep   |   54 |                                 | NULL                                         |
| 377 | root | localhost       | database | Query   |    0 | starting                        | show processlist                             |
| 381 | root | localhost:54858 | database | Query   |    5 | Waiting for table metadata lock | ALTER TABLE company ADD COLUMN active        |
| 382 | root | localhost:54860 | database | Sleep   |    5 |                                 | NULL                                         |
+-----+------+-----------------+--------+---------+------+---------------------------------+----------------------------------------------+
5 rows in set (0.00 sec)

在这种情况下,令人反感的过程是382

1 个答案:

答案 0 :(得分:0)

许多其他类似帖子的答案说,要杀死SLEEP进程,然后“调试”。我的问题与Python中的循环导入问题有关,与MySQL不相关。