14.10.2.2 Проверка совместимости при открытии таблицы
При первом доступе к таблице InnoDB (включая некоторые версии до InnoDB 1.0) проверяет, что формат файла табличного пространства, в котором хранится таблица, полностью поддерживается. Эта проверка предотвращает сбои или повреждения, которые могут возникнуть при столкновении с таблицами, использующими «слишком новую» структуру данных.
Все таблицы, использующие любой поддерживаемый релизом формат файла, могут быть прочитаны или записаны (при условии, что у пользователя есть достаточные права). Установка параметра конфигурации системы innodb_file_format может предотвратить создание новой таблицы, использующей определенный формат файла, даже если этот формат файла поддерживается данной версией. Такая настройка может использоваться для сохранения обратной совместимости, но она не предотвращает доступ к любой таблице, использующей поддерживаемый формат.
Версии MySQL, более ранние, чем 5.0.21, не могут надёжно использовать файлы баз данных, созданные более новыми версиями, если при создании таблицы использовался новый формат файла. Для предотвращения различных ошибок или повреждений InnoDB проверяет совместимость формата файла при открытии файла (например, при первом доступе к таблице). Если текущая версия InnoDB не поддерживает формат файла, определенный типом таблицы в словаре данных InnoDB, MySQL сообщает следующую ошибку:
ERROR 1146 (42S02): Table 'test.t1' doesn't exist
InnoDB также записывает сообщение в журнал ошибок:
InnoDB: table test/t1: unknown table type 33
Тип таблицы должен соответствовать флагам табличного пространства, которые содержат версию формата файла, как описано в разделе 14.10.3, «Определение используемого формата файла».
Версии InnoDB до MySQL 4.1 не включали идентификаторы формата таблицы в файлы базы данных, а версии до MySQL 5.0.21 не включали проверку совместимости формата таблицы. Поэтому нет способа гарантировать правильную работу, если таблица в более новом формате файла используется с версиями InnoDB до 5.0.21.
Возможность управления форматом файлов в InnoDB 1.0 и выше (меток табличного пространства и проверок во время выполнения) позволяет InnoDB как можно скорее проверить, может ли текущая версия программного обеспечения должным образом обработать таблицы, существующие в базе данных.
Если вы разрешаете InnoDB открывать базу данных, содержащую файлы в формате, который он не поддерживает (установив параметр innodb_file_format_check на OFF), проверка на уровне таблицы, описанная в этом разделе, всё ещё применяется.
Пользователям настоятельно рекомендуется не использовать файлы баз данных, содержащие таблицы в формате Barracuda с релизами InnoDB, более старыми, чем MySQL 5.1 с плагином InnoDB. Возможно перестроение таких таблиц для использования формата Antelope.
© 2025 Oracle
Licensed under the GPLv2 License.