Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL 8 ignoriert ganzzahlige Längen

Dies ist eine Änderung, die in dokumentiert ist Versionshinweise zu MySQL 8.0.19 :

Die "Länge" einer Integer-Spalte hat keine Bedeutung. Eine Spalte von int(11) ist dasselbe wie int(2) oder int(40) . Sie sind alle ein ganzzahliger 32-Bit-Datentyp mit fester Größe. Sie unterstützen denselben Mindest- und Höchstwert.

Die „Länge“ von Integer-Spalten ist seit Jahren ein verwirrendes Merkmal von MySQL. Es ist nur ein Hinweis, der die Anzeigebreite betrifft, nicht die Speicherung oder den Wertebereich. Praktisch spielt es nur eine Rolle, wann Sie ZEROFILL verwenden Option.

mysql> create table t ( i1 int(6) zerofill, i2 int(12) zerofill );
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t set i1 = 123, i2 = 123;
Query OK, 1 row affected (0.00 sec)

mysql> select * from t;
+--------+--------------+
| i1     | i2           |
+--------+--------------+
| 000123 | 000000000123 |
+--------+--------------+
1 row in set (0.00 sec)

Daher ist es gut, dass die irreführende Ganzzahl "Länge" jetzt veraltet ist und entfernt wird. Das sorgt seit vielen Jahren für Verwirrung.