Spec-Zone.ru › MariaDB

Поиск и устранение неполадок InnoDB Data Dictionary

Не удается открыть файл

Если InnoDB возвращает ошибку подобную следующей:

ERROR 1016: Can't open file: 'x.ibd'. (errno: 1)

возможно, существует файл-«сирота» .frm. В журнале ошибок (журнал ошибок) также может отображаться следующее:

InnoDB: Cannot find table test/x from the internal data dictionary
InnoDB: of InnoDB though the .frm file for the table exists. Maybe you
InnoDB: have deleted and recreated InnoDB data files but have forgotten
InnoDB: to delete the corresponding .frm files of InnoDB tables?

В этом случае, как указано в сообщении, удалите файл-«сироту» .frm на файловой системе.

Удаление промежуточных таблиц-«сирот»

Промежуточная таблица-«сирота» может помешать вам удалить табличное пространство, даже если оно пусто, и обычно занимает лишнее место.

Она может появиться, если MariaDB завершается в середине операции ALTER TABLE ... ALGORITHM=INPLACE. Такие таблицы перечислены в таблице INFORMATION_SCHEMA.INNODB_SYS_TABLES и всегда начинаются с префикса #sql-ib. Сопутствующий файл .frm также начинается с #sql-, но имеет другое имя.

Чтобы идентифицировать таблицы-«сироты», выполните:

SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';

Когда innodb_file_per_table установлено, файл #sql-*.ibd также будет виден в каталоге базы данных.

Чтобы удалить промежуточную таблицу-«сироту»:

  • Переименуйте файл #sql-*.frm (в каталоге базы данных), чтобы он соответствовал имени базовой таблицы-«сироты», например:
mv #sql-36ab_2.frm #sql-ib87-856498050.frm
  • Удалите таблицу, например:
DROP TABLE `#mysql50##sql-ib87-856498050`;

См. также

  • Обзор устранения неполадок InnoDB
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают позиции MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/innodb-data-dictionary-troubleshooting/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API