Spec-Zone.ru › MySQL 9.2

15.1.21.7 Тихие изменения спецификаций столбцов

В некоторых случаях MySQL молча изменяет спецификации столбцов по сравнению с указанными в инструкции CREATE TABLE или ALTER TABLE. Это могут быть изменения типа данных, атрибутов, связанных с типом данных, или спецификации индекса.

Все изменения подчиняются внутреннему ограничению размера строки в 65535 байт, что может привести к неудаче некоторых попыток изменения типа данных. См. Раздел 10.4.7, «Ограничения на количество столбцов таблицы и размер строки».

  • Столбцы, которые являются частью PRIMARY KEY, делают NOT NULL, даже если это не объявлено явно.

  • Пробелы в конце автоматически удаляются из значений членов ENUM и SET при создании таблицы.

  • MySQL отображает некоторые типы данных, используемые другими поставщиками СУБД, в типы MySQL. См. Раздел 13.9, «Использование типов данных из других систем баз данных».

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

  • Если режим строгого SQL не включен, столбец VARCHAR со спецификацией длины, большей 65535, преобразуется в TEXT, а столбец VARBINARY со спецификацией длины, большей 65535, преобразуется в BLOB. В противном случае в обоих случаях возникает ошибка.

  • Указание атрибута CHARACTER SET binary для типа данных символьных данных приводит к созданию столбца как соответствующего типа данных двоичных данных: CHAR становится BINARY, VARCHAR становится VARBINARY, а TEXT становится BLOB. Для типов данных ENUM и SET этого не происходит; они создаются как объявлены. Предположим, что вы указали таблицу с помощью этого определения:

    CREATE TABLE t
    (
      c1 VARCHAR(10) CHARACTER SET binary,
      c2 TEXT CHARACTER SET binary,
      c3 ENUM('a','b','c') CHARACTER SET binary
    );
    

    Полученная таблица имеет следующее определение:

    CREATE TABLE t
    (
      c1 VARBINARY(10),
      c2 BLOB,
      c3 ENUM('a','b','c') CHARACTER SET binary
    );
    

Чтобы увидеть, использовал ли MySQL тип данных, отличный от указанного вами, выполните инструкцию DESCRIBE или SHOW CREATE TABLE после создания или изменения таблицы.

Некоторые другие изменения типов данных могут произойти, если вы сжимаете таблицу с помощью myisampack. См. Раздел 18.2.3.3, «Характеристики сжатых таблиц».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/silent-column-changes.html

Spec-Zone.ru

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