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,并让该应用程序完成它的事务,或者终止该事务。
我正在使用 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,并让该应用程序完成它的事务,或者终止该事务。