MySql alter table挂起

Edd*_*ddy 13 mysql

我知道这个问题已经被问了好几次但我的问题正在发生在我刚刚创建的一个表中.它只有10列,只有1行.

因此,与通常的悬挂问题不同,这不是具有大量数据的大型表的情况.但它挂起了.

这是我正在运行的sql:

ALTER TABLE `db`.`Search` 
ADD COLUMN `useremail` VARCHAR(256) NOT NULL COMMENT '' AFTER `id`;
Run Code Online (Sandbox Code Playgroud)

很简单,但它挂(50分钟和计数.)我试图戒烟Workbench,并Eclipse和删除所有java流程和一个mysqld过程.但没有运气.

我正在跑步Mac OSX El Capitain.如何将此列添加到我的表中?

gwg*_*gwg 37

我通过搜索"mysql alter table hanging"来解决这个问题,并认为应该记录答案(在评论中).

如果您正在运行MySQL命令(在这种情况下是添加列)并且它意外挂起,例如不是由于表中数据的大小,那么请检查针对数据库运行的其他进程.我让查询继续运行,与另一个客户端连接到服务器,然后键入

SHOW PROCESSLIST;
Run Code Online (Sandbox Code Playgroud)

我的查询已挂起,此消息位于state列中:

Waiting for table metadata lock
Run Code Online (Sandbox Code Playgroud)

我注意到我的机器上有几个僵尸连接,杀了它们(列中的数字在KILL xxx哪里),然后立即完成了这个过程.xxxId

  • 只是添加...`kill`命令在MySQL终端内运行,不需要关闭它.谢谢! (3认同)
  • 为什么僵尸连接会这样做?连接是否由于某种原因不主动执行任何操作而持有表元数据锁?[_继续 RTFM_](https://dev.mysql.com/doc/refman/5.7/en/metadata-locking.html) (2认同)