13.1.18.6 Типовые изменения спецификаций столбцов
В некоторых случаях MySQL незаметно меняет спецификации столбцов по сравнению с указанными в операторе CREATE TABLE или ALTER TABLE. Это могут быть изменения типа данных, атрибутов, связанных с типом данных, или спецификации индекса.
Все изменения подчиняются внутреннему ограничению размера строки в 65 535 байт, что может привести к неудаче некоторых попыток изменения типа данных. См. Раздел 8.4.7, «Ограничения на количество столбцов таблицы и размер строки».
Столбцы, которые являются частью
PRIMARY KEY, становятсяNOT NULL, даже если это не было явно указано.Конечные пробелы автоматически удаляются из значений членов
ENUMиSETпри создании таблицы.MySQL отображает определённые типы данных, используемые другими поставщиками баз данных SQL, в типы MySQL. См. Раздел 11.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. См. Раздел 15.2.3.3, «Характеристики сжатых таблиц».
© 2025 Oracle
Licensed under the GPLv2 License.