Форум пользователей MySQL
Добрый день! Проблема в следующем:
На сервере (fedora) стоит MySQL. Одна из ее баз очень сильно разрослась и было принято решение почистить ее. Перед очищением базы места оставалось 9%.
А после запуска очистки с помощью команды DELETE FROM ‘бла-бла’;
процесс после минут 20 был прерван ошибкой: ERROR 1114 (HY000): The table ‘бла-бла’ is full
После чего место на диске стало занято на 100%.
Я так понимаю, что ошибка и возникла из-за того, что место закончилось.
Но почему это произошло не смог понять. ведь место должно было освободиться.
Подскажите пожалуйста с чем это может быть связано?
#2 22.12.2010 14:34:41
paulus Администратор Зарегистрирован: 22.01.2007 Сообщений: 6756
Re: Проблема с MySQL
Скорее всего, таблица была InnoDB, и хранилище начало создавать копии
страниц для того, чтобы иметь возможность откатить транзакцию, если Вы
это укажете вдальнейшем.
#3 22.12.2010 20:54:13
Ямаец Участник Зарегистрирован: 22.12.2010 Сообщений: 2
Re: Проблема с MySQL
Не смог найти эти копии. Не подскажите, где их искать, для удаления? И как отключить их создание при дальнешей очистке?
#4 23.12.2010 15:30:32
paulus Администратор Зарегистрирован: 22.01.2007 Сообщений: 6756
Re: Проблема с MySQL
Они внутри одного и того же файла, Вы не сможете их «найти». Можете
Если разросся файл ibdata1, то его уменьшить уже не удастся. Если включен
innodb_file_per_table, то может помочь ALTER TABLE tablename ENGINE=InnoDB,
который пересоздаст файлики с таблицами (но на время создания нужно
место на диске, куда будет пересоздана таблица.
Если есть место в другом разделе, можете:
1. Остановить MySQL.
2. Перенести какой-то из больших файлов в другой раздел.
3. Поставить символическую ссылку на старое место файла.
4. Запустить MySQL и почистить.
Вдальнейшем просто не старайтесь удалить половину таблицы одной
транзакцией. Вполне нормально будет тысяча подходов по тысяче строк
в разных транзакциях.
Ошибка «ERROR 1114 (HY000) at line 19894: The table ‘en’ is full» (РЕШЕНО)
Почему возникает ошибка «ERROR 1114 (HY000)»
Во время добавления информации в базу данных, например, при использовании выражения INSERT, либо при импорте таблиц или баз данных в MySQL (MariaDB) может возникнуть ошибка с номером 1114:
ERROR 1114 (HY000) at line 19894: The table 'en' is full
После ошибке идёт пояснение: указанная таблица таблица является полной.
Проблема не в том, что ограничено количество данных, которые можно добавить в таблицу. Скорее всего, проблема в том, что закончилось место на физическом носителе (HDD, SSD или файловой системе в оперативной памяти) на котором размещена база данных с указанной таблицей.
Как исправить ошибку «ERROR 1114 (HY000)»
1. Увеличьте свободное место на диске
Прежде всего, вам необходимо освободить место на физическом носителе.
Пока вы это не сделали, категорически не рекомендуется добавлять или изменять данные в базах данных, поскольку это может привести к их повреждению.
В освобождении места на диске вам могут помочь следующие статьи:
- Как найти файлы и папки занимающие больше всего места в Linux
- Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть
- Как найти самые большие базы данных и самые большие таблицы MySQL
- Какие файлы можно удалить при нехватке места на диске Linux
- ncdu: графический интерфейс du чтобы быстро узнать, какие файлы и папки израсходовали место на диске
Вместо удаления файлов, вы можете перенести базы данных на диск с большим количеством свободного пространства.
В этом вам могут помочь статьи:
- Как узнать путь до файлов базы данных MySQL/MariaDB в Linux и Windows
- Как запустить MySQL/MariaDB с указанием другой директории data
2. Перезапустите службу MySQL
Чтобы быть уверенным, что служба MySQL/MariaDB работает корректно и на неё не оказывает влияние возникшая ранее проблема с нехваткой места на диске, перезапустите эту службу:
sudo systemctl restart mysql
Примечание: в некоторых дистрибутивах служба может называться mysqld, но название mysql является более универсальным.
3. Выполните повторный импорт данных
Если ошибка «ERROR 1114 (HY000)» возникла во время импорта данных и при этом у вас сохранён файл, из которого выполнялся импорт, то рекомендуется удалить таблицу, для которой получена ошибка «ERROR 1114 (HY000)», поскольку данные в этой таблице могут быть неполными и/или повреждёнными.
После удаления проблемной таблиц, заново выполните импорт данных.
Связанные статьи:
- Как удалить все записи в таблице в phpMyAdmin (57.6%)
- Как найти самые большие базы данных и самые большие таблицы MySQL (57.6%)
- Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть (56.8%)
- Какие файлы можно удалить при нехватке места на диске Linux (56.8%)
- Как проверить дисковое пространство на Linux с командой df (53.5%)
- Как пользоваться командой chown для смены владельца и группы файла в Linux (RANDOM — 23%)
Ошибка MySQL 1114: таблица заполнена
x86 MySQL 5.7.23 на Win 7 Pro x86. NTFS. Ошибка встречи 1114 «таблица заполнена», когда табличное пространство превышает 4G. Я попытался создать базы данных с 0 и 1 для параметра «file_per_table». Этот поток Сколько строк может хранить mysql? предполагает, что я должен быть хорошим до 2T. Преобразование таблицы в MyISAM работает, но хотелось бы сохранить ведение журнала и восстановление, которое поставляется с Innodb. x64 работает MySQL на Win 7 Pro x64 (также NTFS). MAX_ROWS = 10000000000 в CREATE TABLE. Я понимаю, что это параметр только для MyISAM и должен быть проигнорирован для InnoDb. Есть ли какая-то конкретная установка в Индодбе? Или это ошибка?
Tom Price 13 авг. 2018, в 23:34
Поделиться
Глядя на два сообщения об ошибках, кажется, что виноваты временные таблицы. Как вы создаете свой стол? Возможно, INSERT . SELECT . и SELECT генерирует временную таблицу 4 ГБ?
Rick James 27 авг. 2018, в 23:30
Поделиться:
1 ответ
Лучший ответ
Изменение: не использовать 32-битную ОС или 32-разрядную MySQL. Используйте только 64-бит.
Если вам нужны таблицы размером более 4 ГБ, установите MySQL в NTFS или более новую файловую систему.
Вероятно, это слишком совпадение, что ваши таблицы максимальны при 4 ГБ и максимальный размер файла для файловой системы FAT32.
Я предлагаю вам дважды проверить, что файловая система, где хранятся ваши данные, — NTFS. Обратите внимание, что это не обязательно диск C :. Запустите этот SQL-запрос в клиенте MySQL:
SELECT @@datadir, @@innodb_data_file_path;
Datadir — это местоположение по умолчанию большинства файлов данных MySQL и файлов журналов.
Если innodb_data_file_path просто называет файл данных, это будет относиться к datadir. Но innodb_data_file_path также может innodb_data_file_path полное имя пути к файлу, и это может быть в другом месте, которое не находится под данным datadir.
Параметр innodb_data_file_path также может установить максимальный размер для глобального табличного пространства, например, если значение выглядит так:
ibdata1:12M:autoextend:max:4GB
Кроме того, отдельные таблицы могут указывать местоположение, находящееся за пределами datadir, но вы, вероятно, знаете это, если это так, потому что для CREATE TABLE требуется явный вариант.
CREATE TABLE 'tablename' ( . ) DATA DIRECTORY = '/alternative/directory';
Форум пользователей MySQL
Создаются только 64 таблицы с PRIMARY KEY.
Информации никакой не удалось найти.
Как поправить? В чём ошибка?
Конфиг кластера:
[ndb_mgmd]
hostname=X.X.X.X
id=1
datadir=C:\\cluster_2
[ndbd default]
NoOfReplicas=2
datadir=C:\\cluster_2
TransactionDeadlockDetectionTimeout=70000
TransactionInactiveTimeout=60000
Redobuffer=80M
TransactionBufferMemory=80M
UndoDataBuffer=80M
MaxNoOfConcurrentOperations=1M
MaxNoOfConcurrentTransactions=1M
DataMemory=700M
IndexMemory=200M
MaxNoOfTables=1K
MaxNoOfAttributes=1K
[TCP DEFAULT]
[ndbd]
hostname=X.X.X.X
id=4
[ndbd]
hostname=X.X.X.X
id=5
[mysqld]
[mysqld]
[mysqld]
#2 26.03.2014 16:19:40
WowaNik Завсегдатай Зарегистрирован: 26.03.2014 Сообщений: 31
Re: Проблема с кластером: ERROR 1114 (HY000): The table ‘X’ is full.
Проблема найдена — очень много индексов вообще.
#3 26.03.2014 17:47:44
WowaNik Завсегдатай Зарегистрирован: 26.03.2014 Сообщений: 31
Re: Проблема с кластером: ERROR 1114 (HY000): The table ‘X’ is full.
Создаётся только 128 индексов для NDBCLUSTER.
Кто может помочь?