ОШИБКА 1114 (HY000): таблица заполнена - PullRequest
90 голосов
/ 08 апреля 2009

Я пытаюсь добавить строку в таблицу InnoDB простым запросом:

INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');

Но когда я пытаюсь выполнить этот запрос, я получаю следующее:

ERROR 1114 (HY000): The table `zip_codes` is full

Выполнение «SELECT COUNT (*) FROM zip_codes» дает мне 188 959 строк, что не слишком много, учитывая, что у меня есть другая таблица с 810 635 строками в той же базе данных.

Я довольно неопытен с движком InnoDB и никогда не сталкивался с этой проблемой с MyISAM. Каковы некоторые из потенциальных проблем здесь?

EDIT: это происходит только при добавлении строки в таблицу zip_codes.

Ответы [ 21 ]

79 голосов
/ 08 апреля 2009

РЕДАКТИРОВАТЬ: Сначала проверьте, если вам не хватило места на диске, прежде чем разрешить в разрешении, связанном с конфигурацией.

Похоже, у вас слишком маленький максимальный размер для innodb_data_file_path в вашем my.cnf, в этом примере

innodb_data_file_path = ibdata1:10M:autoextend:max:512M

вы не можете разместить более 512 МБ данных во всех таблицах innodb вместе взятых.

Возможно, вам следует перейти на схему innodb-per-table, используя innodb_file_per_table.

76 голосов
/ 28 мая 2011

Другая возможная причина - заполнение раздела - это то, что случилось со мной сейчас.

24 голосов
/ 19 мая 2010

Вы также получите ту же ошибку ОШИБКА 1114 (HY000): Таблица '# sql-310a_8867d7f' заполнена

если вы попытаетесь добавить индекс к таблице, использующей механизм хранения MEMORY.

17 голосов
/ 10 марта 2010

Вам необходимо изменить ограничение лимита, установленное в my.cnf для таблиц INNO_DB. Этот предел памяти не установлен для отдельных таблиц, он установлен для всех таблиц вместе взятых.

Если вы хотите, чтобы память автоматически расширялась до 512 МБ

innodb_data_file_path = ibdata1:10M:autoextend:max:512M

Если вы не знаете ограничение или не хотите устанавливать ограничение, вы можете изменить его следующим образом

innodb_data_file_path = ibdata1:10M:autoextend
11 голосов
/ 01 ноября 2011

Эта ошибка также появляется, если раздел, на котором находится tmpdir, заполняется (из-за таблицы изменения или другого

9 голосов
/ 28 апреля 2010

В моем случае это произошло из-за того, что раздел, на котором размещен файл ibdata1, был переполнен.

9 голосов
/ 21 июня 2012

Возможно, вам не хватает места либо в разделе, где хранятся таблицы mysql (обычно / var / lib / mysql), либо в том месте, где хранятся временные таблицы (обычно /tmp).

Возможно, вы захотите: - отслеживать свободное место во время создания индекса. - укажите переменную MySQL tmpdir в другом месте. Это требует перезагрузки сервера.

7 голосов
/ 21 декабря 2011

Если вы используете NDBCLUSTER в качестве механизма хранения, вы должны увеличить DataMemory и IndexMemory.

Mysql FQA

6 голосов
/ 24 августа 2016

Я тоже сталкивался с этой ошибкой при импорте файла базы данных sql 8 ГБ. Проверил мой установочный диск mysql. На диске не осталось места. Так что получили немного места, удалив ненужные элементы, и повторно запустили команду импорта базы данных. На этот раз все прошло успешно.

5 голосов
/ 08 апреля 2009

Если вы не включили опцию innodb_file_per_table, InnoDB хранит все данные в одном файле, обычно называемом ibdata1.

Проверьте размер этого файла и убедитесь, что у вас достаточно места на диске, на котором он находится.

...