2017-10-18 51 views
1

我試圖將列添加到擁有超過2500萬行的mysql表中。我正在運行sql命令嘗試向MYSQL表添加新列時丟失連接

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

這是使用mysql命令行應用程序運行的。

每次我嘗試運行這一點,需要時間,然後我得到的錯誤

ERROR 2013(HY000):查詢

數據庫在運行過程中丟失連接到MySQL服務器AWS上的RDS實例並檢查監控統計數據,但內存或磁盤空間都不足。

還有什麼我可以嘗試添加此列到表中?

回答

0

檢查您的內存使用情況,或更可能是您的磁盤使用情況(在此過程中是否有足夠的可用空間?)。更改表格可能需要大量內存或表格磁盤上的副本。在您的特定情況下更改alter algorithm from INPLACE to COPY可能會更快。

您可能也會遇到innodb_online_alter_log_max_size的限制,但在這種情況下,只有查詢應該失敗,而不是整個服務器。不過,這可能是由於ROLLBACK而不是操作本身造成的。

最後,某些應用程序配置或託管服務器會取消查詢/ http請求時間過長,我建議您在命令行客戶端上執行相同的查詢以進行測試。

+0

信用轉至:https://dba.stackexchange.com/a/91476 – AgeDeO

+0

感謝您的快速回復,但所提出的一些觀點已在問題中進行了介紹。 '檢查你的內存使用情況或你的磁盤使用情況':正如問題中提到的那樣,數據庫在RDS上運行,監視顯示有足夠的​​內存和磁盤空間。 '我建議你在命令行客戶端執行相同的查詢':正如我在做的問題中所述。您提到的最後一件事是將算法從INPLACE更改爲COPY。然而,我不喜歡這樣做,因爲我聽說它可能會改變我的主鍵並導致數據完整性問題。 – SamBremner