Тихие изменения столбцов
При выполнении команды CREATE TABLE или ALTER TABLE MariaDB будет незаметно изменять спецификацию столбца в следующих случаях:
- Столбцы PRIMARY KEY всегда будут NOT NULL.
- Любые хвостовые пробелы из значений SET и ENUM будут отброшены.
- Столбцы TIMESTAMP всегда будут NOT NULL, а размеры отображения будут отброшены.
- Применяется ограничение размера строки в 65535 байт.
- Если режим SQL строгого режима не включён (он включен по умолчанию начиная с MariaDB 10.2), столбец VARCHAR, превышающий 65535, станет TEXT, а столбец VARBINARY, превышающий 65535, станет BLOB. Если режим строгости включен, тихие изменения не будут выполнены, и произойдёт ошибка.
- Если в ключе USING указан индекс, который не разрешён хранилищем данных, хранилище данных вместо него использует другой доступный тип индекса, который можно применить без изменения результатов.
- Если атрибут CHARACTER SET binary указан, столбец создаётся как соответствующий бинарный тип данных. TEXT становится BLOB, CHAR — BINARY, а VARCHAR — VARBINARY. ENUM и SET создаются как определено.
Для облегчения импорта из других СУБД MariaDB также будет незаметно преобразовывать следующие типы данных:
| Тип другого поставщика | Тип MariaDB |
|---|---|
| BOOL | TINYINT |
| BOOLEAN | TINYINT |
| CHARACTER VARYING(M) | VARCHAR(M) |
| FIXED | DECIMAL |
| FLOAT4 | FLOAT |
| FLOAT8 | DOUBLE |
| INT1 | TINYINT |
| INT2 | SMALLINT |
| INT3 | MEDIUMINT |
| INT4 | INT |
| INT8 | BIGINT |
| LONG VARBINARY | MEDIUMBLOB |
| LONG VARCHAR | MEDIUMTEXT |
| LONG | MEDIUMTEXT |
| MIDDLEINT | MEDIUMINT |
| NUMERIC | DECIMAL |
В настоящее время в MariaDB поддерживаются все типы данных MySQL.
Для отображения сопоставления типов между Cassandra и MariaDB см. хранилище данных Cassandra.
Пример
Тихие изменения в действии:
CREATE TABLE SilenceIsGolden
(
f1 TEXT CHARACTER SET binary,
f2 VARCHAR(15) CHARACTER SET binary,
f3 CHAR CHARACTER SET binary,
f4 ENUM('x','y','z') CHARACTER SET binary,
f5 VARCHAR (65536),
f6 VARBINARY (65536),
f7 INT1
);
Query OK, 0 rows affected, 2 warnings (0.31 sec)
SHOW WARNINGS;
+-------+------+-----------------------------------------------+
| Level | Code | Message |
+-------+------+-----------------------------------------------+
| Note | 1246 | Converting column 'f5' from VARCHAR to TEXT |
| Note | 1246 | Converting column 'f6' from VARBINARY to BLOB |
+-------+------+-----------------------------------------------+
DESCRIBE SilenceIsGolden;
+-------+-------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------------+------+-----+---------+-------+
| f1 | blob | YES | | NULL | |
| f2 | varbinary(15) | YES | | NULL | |
| f3 | binary(1) | YES | | NULL | |
| f4 | enum('x','y','z') | YES | | NULL | |
| f5 | mediumtext | YES | | NULL | |
| f6 | mediumblob | YES | | NULL | |
| f7 | tinyint(4) | YES | | NULL | |
+-------+-------------------+------+-----+---------+-------+
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку в 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/silent-column-changes/