Spec-Zone .ru
спецификации, руководства, описания, API

5.4.6.6. Предупреждения Синтаксиса Сжатия SQL и Ошибки

Определение ROW_FORMAT=COMPRESSED или KEY_BLOCK_SIZE в CREATE TABLE или ALTER TABLE операторы производят следующие предупреждения, если формат файла Барракуды не включается. Можно просмотреть их с SHOW WARNINGS оператор.

Уровень Код Сообщение
Предупреждение 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
Предупреждение 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format=1
Предупреждение 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4.
Предупреждение 1478 InnoDB: ROW_FORMAT=COMPRESSED requiresinnodb_file_per_table.
Предупреждение 1478 InnoDB: assuming ROW_FORMAT=COMPACT.

Примечания:

"Нестрогое" поведение позволяет Вам импортировать a mysqldump файл в базу данных, которая не поддерживает сжатые таблицы, даже если исходная содержавшая база данных сжимала таблицы. В этом случае MySQL составляет таблицу в ROW_FORMAT=COMPACT вместо того, чтобы предотвратить работу.

Чтобы импортировать файл дампа в новую базу данных, и воссоздать таблицы поскольку, они существуют в исходной базе данных, гарантируют, что у сервера есть надлежащие настройки для параметров конфигурации innodb_file_format и innodb_file_per_table.

Атрибут KEY_BLOCK_SIZE разрешается только когда ROW_FORMAT определяется как COMPRESSED или опускается. Определение a KEY_BLOCK_SIZE с любым другим ROW_FORMAT генерирует предупреждение, что можно просмотреть с SHOW WARNINGS. Однако, таблица несжимается; указанное KEY_BLOCK_SIZE игнорируется).

Уровень Код Сообщение
Предупреждение 1478 InnoDB: ignoring KEY_BLOCK_SIZE=nunless ROW_FORMAT=COMPRESSED.

Если Вы работаете с innodb_strict_mode включенный, комбинация a KEY_BLOCK_SIZE с любым ROW_FORMAT кроме COMPRESSED генерирует ошибку, не предупреждение, и таблица не составляется.

Таблица 5.6, "Значение CREATE TABLE и ALTER TABLE опции" подводят итог как различные варианты на CREATE TABLE и ALTER TABLE обрабатываются.

Таблица 5.6. Значение CREATE TABLE иALTER TABLE опции

Опция Использование Описание
ROW_FORMAT=​REDUNDANT Формат хранения используется до MySQL 5.0.3 Менее эффективный чем ROW_FORMAT=COMPACT; для обратной совместимости
ROW_FORMAT=​COMPACT Формат хранения значения по умолчанию начиная с MySQL 5.0.3 Хранит префикс 768 байтов длинных значений столбцов в странице кластерного индекса, с остающимися байтами, сохраненными в странице переполнения
ROW_FORMAT=​DYNAMIC Доступный только с innodb_file​_format=Barracuda Хранилище оценивает в пределах страницы кластерного индекса, если они соответствуют; в противном случае хранилища только 20-байтовый указатель на страницу переполнения (никакой префикс)
ROW_FORMAT=​COMPRESSED Доступный только с innodb_file​_format=Barracuda Сжимает таблицу и индексирует использование zlib, чтобы принять значение по умолчанию сжатый размер страницы 8 K байтов; подразумевает ROW_FORMAT=DYNAMIC
KEY_BLOCK_​SIZE=n Доступный только с innodb_file​_format=Barracuda Определяет сжатый размер страницы 1, 2, 4, 8 или 16 килобайтов; подразумевает ROW_FORMAT=DYNAMIC иROW_FORMAT=COMPRESSED

Таблица 5.7,"CREATE/ALTER TABLE Предупреждения и Ошибки, когда InnoDB Строгий Режим ПРОЧЬ", суммируют состояния ошибки, которые происходят с определенными комбинациями параметров конфигурации и опций на CREATE TABLE или ALTER TABLE операторы, и как опции появляются в выводе SHOW TABLE STATUS.

Когда innodb_strict_mode OFF, MySQL создает или изменяет таблицу, но игнорирует определенные настройки как показано ниже. Можно видеть предупреждающие сообщения в журнале ошибок MySQL. Когда innodb_strict_mode ON, эти указанные комбинации опций генерируют ошибки, и таблица не составляется или изменяется. Чтобы видеть полное описание состояния ошибки, выйдите SHOW ERRORS оператор: пример:

mysql> CREATE TABLE x (id INT PRIMARY KEY, c
        INT)-> ENGINE=INNODB KEY_BLOCK_SIZE=33333;ERROR 1005 (HY000): Can't create table 'test.x' (errno: 1478)mysql> SHOW ERRORS;+-------+------+-------------------------------------------+ | Level | Code | Message                                   | +-------+------+-------------------------------------------+ | Error | 1478 | InnoDB: invalid KEY_BLOCK_SIZE=33333.     | | Error | 1005 | Can't create table 'test.x' (errno: 1478) | +-------+------+-------------------------------------------+ 2 rows in set (0.00 sec)

Таблица 5.7. CREATE/ALTER TABLE Предупреждения и Ошибки, когда Режим InnoDBStrict ВЫКЛЮЧЕН

Синтаксис Предупреждение или Состояние ошибки Заканчивание ROW_FORMAT, как показано в SHOW TABLE STATUS
ROW_FORMAT=REDUNDANT Ни один REDUNDANT
ROW_FORMAT=COMPACT Ни один COMPACT
ROW_FORMAT=COMPRESSED или ROW_FORMAT=DYNAMIC или KEY_BLOCK_SIZE определяется Проигнорированный, если оба innodb_file_format=Barracuda и innodb_file_per_table включаются COMPACT
Недопустимый KEY_BLOCK_SIZE определяется (не 1, 2, 4, 8 или 16) KEY_BLOCK_SIZE игнорируется требуемый, или COMPACT по умолчанию
ROW_FORMAT=COMPRESSED и допустимый KEY_BLOCK_SIZE определяются Ни один; KEY_BLOCK_SIZE определенный используется, не 8 K значения по умолчанию COMPRESSED
KEY_BLOCK_SIZE определяется с REDUNDANT, COMPACT или DYNAMIC формат строки KEY_BLOCK_SIZE игнорируется REDUNDANT, COMPACT или DYNAMIC
ROW_FORMAT не один из REDUNDANT, COMPACT, DYNAMIC или COMPRESSED Проигнорированный если распознано синтаксическим анализатором MySQL. Иначе, ошибка isissued. COMPACT или N/A

Когда innodb_strict_mode ON, Недопустимые отклонения MySQL ROW_FORMAT или KEY_BLOCK_SIZE параметры. Для совместимости с более ранними версиями MySQL строгий режим не включается по умолчанию; вместо этого, MySQL выпускает предупреждения (не ошибки) для проигнорированных недопустимых параметров.

Отметьте, что не возможно видеть выбранный KEY_BLOCK_SIZE использование SHOW TABLE STATUS. Оператор SHOW CREATE TABLE дисплеи KEY_BLOCK_SIZE (даже если это было проигнорировано, составляя таблицу). Вещественное число сжатый размер страницы таблицы не может быть выведено на экран MySQL.