Почему MySQL выдает мне «ERROR 114 — Table Full»?

Почему MySQL выдает мне «ERROR 114 — Table Full»?

У меня есть таблица базы данных MySQL с 31 107 600 строками. Она использует InnoDB. Это на системе CentOS 7.

Таблица имеет следующие столбцы:

  • идентификатор
  • временная метка
  • мак
  • данные
  • направление
  • site_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для хранения своих данных. В настоящее время раздел, на котором находится папка, имеет 12 ГБ свободного места, а размер моей базы данных составляет всего 2,7 ГБ, так что, насколько я могу судить, места должно быть более чем достаточно.

Почему я вижу эту ошибку? Поиск в интернете показывает, что, возможно, он использует временную таблицу и сталкивается с ограничениями по размеру временной таблицы? Может ли это быть? Или что-то еще? Как я могу это подтвердить?

решение1

Во время выполнения оператора ALTER TABLE наблюдайте за использованием пространства на всех файловых системах с помощью df. Посмотрите, не уменьшается ли быстро пространство на другой файловой системе, особенно небольшой, например, если у вас есть /tmp на tmpfs.

Связанный контент