尝试向MYSQL表添加新列时丢失连接

时间:2017-10-18 10:12:27

标签: mysql

我试图将列添加到超过2500万行的mysql表中。我正在运行sql命令

ALTER TABLE `table_name` ADD COLUMN `column_name` varchar(128) NULL DEFAULT NULL;

这是使用mysql命令行应用程序运行的。

每次我尝试运行它都需要几个小时然后我才会收到错误

  

错误2013(HY000):查询期间与MySQL服务器的连接丢失

数据库在AWS上的RDS实例中运行,并检查监控统计信息,内存或磁盘空间都没有用尽。

还有什么我可以尝试将此列添加到表中吗?

1 个答案:

答案 0 :(得分:0)

检查您的内存使用情况,或者更可能是您的磁盘使用情况(在此过程中是否有足够的可用空间?)。更改表可能需要大量内存或表的磁盘上的副本。在您的特定情况下,更改alter算法from INPLACE to COPY可能会更快。

您也可能达到innodb_online_alter_log_max_size限制,但在这种情况下,只有查询失败,而不是整个服务器。可能由于ROLLBACK而导致崩溃,而不是操作本身。

最后,一些应用程序配置或托管服务器取消了花费太长时间的查询/ http请求,我建议您在命令行客户端上执行相同的查询以进行测试。