Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
MYSQL-ERR-1813 Linux / DevOps

MySQL Ошибка 1813 (HY000): Tablespace for table exists (Discard / Import tablespace)

Обновлено: 21.08.2026  ·  Официальная база знаний

Архитектура индивидуальных табличных пространств (innodb_file_per_table)

При включенном режиме innodb_file_per_table = 1 (активен по умолчанию во всех современных версиях MySQL) движок InnoDB хранит данные и индексы каждой таблицы в отдельном файле таблица.ibd в каталоге базы данных. Системная ошибка MySQL Error 1813 (SQLSTATE HY000): «Tablespace for table '`db`.`table`' exists. Please DISCARD the tablespace before IMPORT» возникает при попытке выполнить команду CREATE TABLE `table`, если на физическом диске в каталоге базы данных уже обнаружен существующий файл table.ibd, либо если в системном словаре InnoDB осталась невычищенная запись о предыдущем табличном пространстве с таким ID.

Бизнес-риски

Невозможность пересоздания упавших или случайно удаленных таблиц, блокировка автоматического деплоя и выполнения миграций.

Причины появления «осиротевших» (Orphan) табличных пространств

Сценарий возникновенияЧто произошло на уровне файловой системы / СУБД
Аварийная остановка при DROP TABLEЗапись из словаря удалилась, но файл .ibd не успел удалиться с диска.
Ручное копирование файлов через ОСФайлы скопированы в /var/lib/mysql/ без регистрации через IMPORT TABLESPACE.
Восстановление из снимка LVM / бэкапаРассинхронизация словаря данных в ibdata1 / mysql.ibd и физических файлов.

Регламент очистки и повторной инициализации табличных пространств

Сценарий 1: Удаление физического осиротевшего файла .ibd с диска

Если таблица удалена из базы, но старый файл остался в файловой системе:

# 1. Проверьте наличие остаточного файла в каталоге базы данных:
sudo ls -la /var/lib/mysql/my_database/my_table.ibd

# 2. Переместите старый файл в резервную папку (или удалите):
sudo mv /var/lib/mysql/my_database/my_table.ibd /tmp/my_table_backup.ibd

# 3. В консоли MySQL повторите создание таблицы:
mysql -u root -p my_database
CREATE TABLE `my_table` ( id INT PRIMARY KEY, name VARCHAR(100) ) ENGINE=InnoDB;

Сценарий 2: Очистка табличного пространства через процедуру DISCARD TABLESPACE

Если вы хотите импортировать готовый .ibd файл с другого сервера:

-- 1. Создайте пустую таблицу с ТОЧНО ТАКОЙ ЖЕ структурой:
CREATE TABLE `my_table` ( id INT PRIMARY KEY, name VARCHAR(100) ) ENGINE=InnoDB;

-- 2. Отсоедините и удалите вновь созданное табличное пространство:
ALTER TABLE `my_table` DISCARD TABLESPACE;

-- 3. Скопируйте ваш целевой .ibd файл в каталог базы данных через терминал:
-- sudo cp /backup/my_table.ibd /var/lib/mysql/my_database/
-- sudo chown mysql:mysql /var/lib/mysql/my_database/my_table.ibd

-- 4. Импортируйте пространство обратно в движок InnoDB:
ALTER TABLE `my_table` IMPORT TABLESPACE;

Сценарий 3: Удаление зависшего пространства через DROP TABLESPACE (MySQL 8.0)

Если в MySQL 8.0 было создано общее табличное пространство (General Tablespace):

-- Просмотр зарегистрированных табличных пространств:
SELECT * FROM information_schema.innodb_tablespaces WHERE name LIKE '%my_table%';

-- Принудительное удаление зарегистрированного пространства:
DROP TABLESPACE `my_tablespace_name`;

Типовые ошибки администраторов

  • Удаление ibdata1 при ошибке 1813: Удаление главного файла ibdata1 полностью разрушает системный словарь данных и делает невозможным запуск ВСЕХ остальных баз данных на сервере.
  • Забытые права доступа после ручного копирования: Если скопировать файл my_table.ibd от пользователя root, MySQL не сможет открыть его из-за отсутствия прав у пользователя mysql.
Не удается создать таблицу из-за конфликтов табличных пространств InnoDB?
Эксперты ITSTM проведут корректную синхронизацию системного словаря метаданных и восстановят целостность таблиц.
Практический опыт инженера: При переносе тяжелых таблиц (размером сотни гигабайт) механизм ALTER TABLE DISCARD/IMPORT TABLESPACE является самым быстрым методом миграции, так как копирование готового .ibd файла в десятки раз быстрее экспорта и импорта текстового mysqldump.

Частые вопросы (FAQ)

Почему нельзя просто скопировать .ibd файл в папку базы, как это делалось в MyISAM?

В InnoDB каждая таблица имеет внутренний 32-битный Tablespace ID, который обязан совпадать со служебным заголовком внутри ibdata1 / Data Dictionary. Простое копирование файлов вызовет рассинхронизацию ID.

Что делать, если при IMPORT TABLESPACE возникает ошибка 'Schema mismatch'?

Структура колонок (DDL) созданной пустой таблицы не совпадает с DDL оригинального .ibd файла. Структура должна быть абсолютно идентичной до последнего байта.

Где хранятся метаданные таблиц в MySQL 8.0 вместо старых .frm файлов?

В MySQL 8.0 файлы .frm упразднены. Все метаданные хранятся в транзакционном словаре данных внутри общего табличного пространства mysql.ibd.

Как сгенерировать DDL структуру из существующего .ibd файла?

Используйте утилиту dbsake (dbsake frmdump) или парсер ibd2sdi, встроенный в MySQL 8.0: ibd2sdi my_table.ibd.