為什麼 MySQL 給我「ERROR 114 - Table Full」?

為什麼 MySQL 給我「ERROR 114 - Table Full」?

我有一個 MySQL 資料庫表,其中有 31,107,600 行。它使用 InnoDB。這是在 CentOS 7 系統上。

該表包含以下幾列:

  • ID
  • 時間戳
  • 蘋果
  • 數據
  • 方向
  • 網站 ID

我想創建一個索引,所以我運行以下命令:

ALTER TABLE MY_TABLE ADD INDEX idx_my_index (mac, site_id, timestamp);

大約需要 30 秒,然後給我這個:

ERROR 1114 (HY000): The table 'MY_TABLE' is full

我的 MySQL 使用預設值/var/lib/mysql來儲存其資料。目前,該資料夾所在的分割區有 12GB 可用空間,而我的資料庫大小只有 2.7GB,所以據我所知,它應該有足夠的空間。

為什麼我會看到這個錯誤?網路上查了一下,可能是使用了臨時表,並且命中了臨時表大小的限制?會是這樣嗎?還是其他東西?我如何確認這一點?

答案1

當 ALTER TABLE 語句運作時,使用 df 觀察所有檔案系統上的空間使用情況。查看另一個檔案系統(尤其是小檔案系統)上的空間是否正在快速減少,例如 tmpfs 上是否有 /tmp。

相關內容