Това е промяна, документирана в Бележки за версията на MySQL 8.0.19 :
"Дължината" на колона с цяло число не означава нищо. Колона от int(11)
е същото като int(2)
или int(40)
. Всички те са 32-битов целочислен тип данни с фиксиран размер. Те поддържат една и съща минимална и максимална стойност.
"Дължината" на целочислените колони е объркваща характеристика на MySQL от години. Това е само намек, който влияе върху ширината на дисплея, а не върху съхранението или диапазона от стойности. На практика това има значение само когато използвате ZEROFILL
опция.
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)
Така че е добре, че подвеждащото цяло число "дължина" вече е остаряло и премахнато. Това предизвиква объркване от много години.