Cambiamenti nelle colonne silenziosi
Quando viene eseguito un comando CREATE TABLE o ALTER TABLE, MariaDB modifica silenziosamente le definizioni delle colonne nei seguenti casi:
- Le colonne PRIMARY KEY sono sempre NOT NULL.
- Tutti gli spazi finali dai valori SET e ENUM vengono eliminati.
- Le colonne TIMESTAMP sono sempre NOT NULL, e le dimensioni dell'output vengono eliminate
- C'è un limite di riga di 65535 byte
- Se la modalità SQL strict non è abilitata, le colonne VARCHAR più lunghe di 65535 diventano TEXT, e le colonne VARBINARY più lunghe di 65535 diventano BLOB. Se lo strict mode è abilitato non verrannno effettuati cambiamenti silenziosi, e verrà generato un errore.
- Se si specifica una clausola USING che indica un tipo di indice non permesso dallo Storage Engine, verrà scelto un altro tipo di indice che si può utilizzare senza modificare i risultati.
- Se l'attributo BINARY di CHARACTER SET è specificato, la colonna viene creata con il tipo binario corrispondente. Se è TEXT diventa BLOB, se è CHAR diventa BINARY e se è VARCHAR diventa VARBINARY. Gli ENUM e i SET sono creati così come sono definiti.
Per facilitare il port da altri RDBMS, MariaDB mappa silenziosamente i seguenti tipi di dati:
Tipo di altri vendor | Tipo di 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 |
Esempio
Modifiche silenziose in azione:
MariaDB [test]> 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) MariaDB [test]> SHOW WARNINGS; +-------+------+-----------------------------------------------+ | Level | Code | Message | +-------+------+-----------------------------------------------+ | Note | 1246 | Converting column 'f5' from VARCHAR to TEXT | | Note | 1246 | Converting column 'f6' from VARBINARY to BLOB | +-------+------+-----------------------------------------------+ MariaDB [test]> 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 | | +-------+-------------------+------+-----+---------+-------+
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.