【问题标题】:Lost Connection when trying to add new column to MYSQL table尝试将新列添加到 MYSQL 表时丢失连接
【发布时间】:2017-10-18 10:12:27
【问题描述】:

我正在尝试向具有超过 2500 万行的 mysql 表添加一列。我正在运行sql命令

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

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

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

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

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

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

    您也可能达到了innodb_online_alter_log_max_size 限制,尽管在这种情况下,只有查询会失败,而不是整个服务器。不过,崩溃可能是由于ROLLBACK 而发生的,而不是操作本身。

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

    【讨论】:

    • 感谢您的快速回复,但问题中已经涵盖了一些观点。 “检查您的内存使用情况或磁盘使用情况”:如问题中所述,数据库正在 RDS 上运行,监控显示内存和磁盘空间充足。 '我建议您在命令行客户端上执行相同的查询':正如我正在做的问题中所述。您提到的最后一件事是将算法从 INPLACE 更改为 COPY。但是我对此并不满意,因为我听说它可能会更改我的主键并导致数据完整性问题。
    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 2017-11-05
    • 1970-01-01
    • 2017-09-10
    • 2016-11-20
    • 2022-11-16
    • 2019-02-15
    • 1970-01-01
    相关资源
    最近更新 更多