Spec-Zone.ru › MariaDB

Тихие изменения столбцов

При выполнении команды 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/

Spec-Zone.ru

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