MySQL "Waiting for table metadata lock"卡在 1 个特定表上

标签 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

最佳答案

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

关于MySQL "Waiting for table metadata lock"卡在 1 个特定表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887796/

相关文章:

mysql - 使用mysql中的select和case语句更新

c - 如果使用共享内存,进程是否仍然比线程有优势?

node.js - 当事件队列被阻塞时,Node.js 服务器可以接受传入的请求吗?

mysql - SSIS将英文BlobColumn转换为以汉字结尾的字符串

php - 更新中间表 Laravel 关系

C fork 进程不断显示在 'ps -a' 输出中

node.js - 如何通过mongoose非阻塞获取大数据?

php - 为什么这不包括所有文件?

powershell - 如何将输出从 PowerShell 中的外部进程捕获到变量中?