我知道这个问题已经被问了好几次了,但是我的问题发生在我刚刚创建的一个表上。它只有10列和1行。
因此,与通常的挂起问题不同,这不是包含大量数据的大型表的情况。但它还是挂了。
这是我正在运行的SQL:
ALTER TABLE `db`.`Search`
ADD COLUMN `useremail` VARCHAR(256) NOT NULL COMMENT '' AFTER `id`;很简单,但它仍然挂起(50分钟,而且还在继续)。我尝试退出Workbench和Eclipse,并删除所有java进程和一个mysqld进程。但没那么走运。
我在Mac OSX El Capitain上运行。如何将此列添加到表中?
发布于 2016-07-07 22:01:06
我是通过搜索"mysql alter table hanging“找到这个问题的,我认为答案(在注释中)应该被记录下来。
如果您正在运行一个MySQL命令(在本例中是为了添加一列),并且该命令意外挂起,例如,不是由于表中数据的大小,那么请检查针对数据库运行的其他进程。我让查询继续运行,使用另一个客户机连接到服务器,然后输入
SHOW PROCESSLIST;我的查询挂起了,此消息位于state列中:
Waiting for table metadata lock我注意到我的机器上有几个僵尸连接,杀死了它们(KILL xxx,其中xxx是Id列中的数字),然后这个过程立即结束。
发布于 2018-08-09 23:27:54
我在生产服务器的Galera集群(MariaDB)上遇到了同样的问题,冻结是由于alter table add column使用默认值造成的,我可以看到使用SHOW PROCESSLIST我关闭了服务器以强制终止进程,但我有很多工作要重新启动集群。
第二次发生的时候,我所做的就是等待查询完成,因为它需要处理150万行的表,所以我花了大约20分钟的时间。,,。那么表的锁是打开的。
https://stackoverflow.com/questions/35293625
复制相似问题