MySQL 改变 Table 数据库冻结

MySQL Alter Table DB Freezes

我正在使用 Ubuntu 16.04.3 和 mysql Ver 14.14 Distrib 5.7.22.

当我尝试使用以下命令更改我的数据库 table 列时,数据库似乎冻结了;

mysql> alter table records modify column name varchar(150);

Table 大小为 2.8MiB(6,000 条记录)。

我只是想更改 varchar(150) 部分。

我曾尝试在 HeidiSQL 和 Workbench 等 GUI 程序中做同样的事情,结果相同 - 程序崩溃,我必须重新启动会话。

我以 root 身份登录数据库和服务器。我检查了 /var/log/mysql/error.log 但它只显示失败的登录尝试,与此错误无关。

知道这是怎么回事,或者我该如何解决这个问题?

您是否有针对此 table 的任何应用 运行宁长-运行宁交易?如果有任何事务持有元数据锁,它将无法启动 ALTER TABLE.

如果您可以 运行 在另一个 window 中显示 PROCESSLIST 而 ALTER TABLE 似乎挂起,它可能会显示 "waiting for metadata lock"。

+----+------+-----------+------+---------+------+---------------------------------+------------------------+-----------+---------------+
| Id | User | Host      | db   | Command | Time | State                           | Info                   | Rows_sent | Rows_examined |
+----+------+-----------+------+---------+------+---------------------------------+------------------------+-----------+---------------+
|  4 | root | localhost | test | Query   |    0 | init                            | show processlist       |         0 |             0 |
|  5 | root | localhost | test | Query   |   15 | Waiting for table metadata lock | alter table foo...     |         0 |             0 |
+----+------+-----------+------+---------+------+---------------------------------+------------------------+-----------+---------------+

然后您需要找出哪个应用程序有一个打开的事务正在阻止 ALTER TABLE,并让该应用程序完成它的事务,或者终止该事务。