Я пытаюсь добавить строку в InnoDB
таблицу простым запросом:
INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');
Но когда я пытаюсь выполнить этот запрос, я получаю следующее:
ОШИБКА 1114 (HY000): таблица
zip_codes
заполнена
Делая
SELECT COUNT(*) FROM zip_codes
дает мне 188 959 строк, что не кажется слишком большим, учитывая, что у меня есть другая таблица с 810 635 строками в той же базе данных.
Я довольно неопытен в использовании InnoDB engine
и никогда не сталкивался с этой проблемой MyISAM
. Какие здесь потенциальные проблемы?
РЕДАКТИРОВАТЬ: это происходит только при добавлении строки в zip_codes
таблицу.
Ответы:
РЕДАКТИРОВАТЬ: сначала проверьте, не закончилось ли у вас дисковое пространство, прежде чем переходить к разрешению, связанному с конфигурацией.
Кажется, у вас слишком низкий максимальный размер для
innodb_data_file_path
вашегоmy.cnf
, В этом примеревы не можете разместить более 512 МБ данных во всех таблицах innodb вместе взятых.
Возможно, вам стоит перейти на схему innodb-per-table с использованием
innodb_file_per_table
.источник
/etc/mysql/
и частично разделен на дополнительные файлы в/etc/mysql/conf.d
innodb_data_file_path
строки в/etc/mysql/mysql.conf.d/mysqld.cnf
и перезапускаmysql
иapache2
услугиДругая возможная причина - переполнение раздела - именно это и случилось со мной сейчас.
источник
df -h
для проверки размера дискаВы также получите ту же ошибку ERROR 1114 (HY000): Таблица '# sql-310a_8867d7f' заполнена
если вы попытаетесь добавить индекс к таблице, которая использует механизм хранения MEMORY.
источник
ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);
сработало.Вам необходимо изменить ограничение, установленное в my.cnf для таблиц INNO_DB. Этот предел памяти не установлен для отдельных таблиц, он установлен для всех таблиц вместе.
Если вы хотите, чтобы память автоматически увеличивалась до 512 МБ
Если вы не знаете лимит или не хотите устанавливать лимит, вы можете изменить его следующим образом
источник
Эта ошибка также появляется, если раздел, на котором он
tmpdir
находится, заполняется (из-за изменения таблицы или другогоисточник
В моем случае это произошло из-за того, что раздел, на котором размещен файл ibdata1, был заполнен.
источник
Возможно, у вас не хватает места либо в разделе, где хранятся таблицы mysql (обычно / var / lib / mysql), либо в том, где хранятся временные таблицы (обычно / tmp).
Вы можете захотеть: - контролировать свободное пространство во время создания индекса. - укажите переменную MySQL tmpdir в другое место. Это требует перезапуска сервера.
источник
Я тоже столкнулся с этой ошибкой при импорте файла базы данных sql размером 8 ГБ. Проверил мой установочный диск mysql. На диске не осталось места. Итак, я получил немного места, удалив ненужные элементы и повторно выполнив команду импорта базы данных. На этот раз все прошло успешно.
источник
Если вы используете NDBCLUSTER в качестве механизма хранения, вам следует увеличить
DataMemory
иIndexMemory
.Mysql FQA
источник
Если вы не включили эту
innodb_file_per_table
опцию,InnoDB
все данные хранятся в одном файле, который обычно называетсяibdata1
.Проверьте размер этого файла и убедитесь, что у вас достаточно места на диске, на котором он находится.
источник
у нас было: SQLSTATE [HY000]: Общая ошибка: 1114 Таблица 'catalog_product_index_price_bundle_sel_tmp' заполнена
решено:
редактировать конфигурацию db:
нано /etc/my.cnf
tmp_table_size = 256M max_heap_table_size = 256M
источник
ПОЛЬЗОВАТЕЛИ ДОКЕРА: это также происходит, когда вы достигли примерно 90% предельного размера образа Docker (кажется, для кеширования требуется 10% или около того). Формулировка сбивает с толку, поскольку это просто означает объем дискового пространства, который Docker может использовать практически для всего.
Чтобы исправить это, перейдите в настройки рабочего стола Docker> Диск> переместите ползунок немного вправо> Применить.
источник
Процитируем документы MySQL.
источник
в моем случае это просто потому, что сервер mysql работает вместе с приложением, которое записывает слишком много журналов, что диск заполнен.
вы можете проверить, достаточно ли места на диске
если процент использования диска составляет 100%, вы можете использовать эту команду, чтобы определить, какой каталог слишком велик
источник
В CentOS 7 для меня это исправило просто остановка и запуск службы MySQL.
sudo service mysql stop
sudo service mysql start
источник
Я столкнулся с той же проблемой из-за нехватки места на диске. И раздел, на котором размещен файл ibdata1, который является системным табличным пространством для инфраструктуры InnoDB, был заполнен.
источник
У меня возникла эта проблема ... в моем случае на моем выделенном сервере закончилось место для хранения. Проверьте это, если все остальное не удается, и рассмотрите возможность увеличения дискового пространства или удаления ненужных данных или файлов.
источник
В моем случае память сервера была заполнена, поэтому БД не могла записать временные данные. Чтобы решить эту проблему, вам просто нужно освободить место на диске.
источник
Я исправил эту проблему, увеличив объем памяти, доступной бродячей виртуальной машине, где находилась база данных.
источник
В моем случае я пытался запустить команду alter table, и доступное дисковое пространство было меньше размера таблицы. Как только я увеличил дисковое пространство, проблема исчезла.
источник
Этот диск заполнен в / var / www / mysql
источник
Это также может быть предел InnoDB для количества открытых транзакций:
http://bugs.mysql.com/bug.php?id=26590
источник