我正在尝试向特定表添加一列。每次我向上或向下运行迁移时,都会弹出一个 SLEEP 命令并阻止所有内容。就像许多其他遇到此问题的人一样,我终止了阻塞进程,一切都按预期进行。
我尝试针对不同的表运行迁移,没有出现任何问题。似乎这个特定的表有一些特定的内容。
我应该在哪里或寻找什么?为什么这个问题会如此频繁地发生?
谢谢。
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
。
最佳答案
许多其他类似帖子的答案都说终止 SLEEP 进程,然后“调试”。我的问题与 Python 中的循环导入问题有关,与 MySQL 无关。
关于MySQL "Waiting for table metadata lock"卡在 1 个特定表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887796/