Cambiamenti nelle colonne silenziosi

Stai visualizzando una vecchia versione di questo article. Visualizza la versione più recente.

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 vendorTipo di MariaDB
BOOLTINYINT
BOOLEANTINYINT
CHARACTER VARYING(M)VARCHAR(M)
FIXEDDECIMAL
FLOAT4FLOAT
FLOAT8DOUBLE
INT1TINYINT
INT2SMALLINT
INT3MEDIUMINT
INT4INT
INT8BIGINT
LONG VARBINARYMEDIUMBLOB
LONG VARCHARMEDIUMTEXT
LONGMEDIUMTEXT
MIDDLEINTMEDIUMINT
NUMERICDECIMAL

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    |       |
+-------+-------------------+------+-----+---------+-------+

Commenti

Sto caricando i commenti......
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.