为什么 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。

相关内容