Jest to zmiana udokumentowana w Informacje o wydaniu MySQL 8.0.19 :
„Długość” kolumny liczb całkowitych nic nie znaczy. Kolumna int(11)
jest tym samym co int(2)
lub int(40)
. Wszystkie są 32-bitowymi liczbami całkowitymi o stałym rozmiarze. Obsługują tę samą minimalną i maksymalną wartość.
„Długość” kolumn liczb całkowitych przez lata była mylącą cechą MySQL. To tylko wskazówka, która wpływa na szerokość wyświetlacza, a nie na pamięć czy zakres wartości. Praktycznie ma to znaczenie tylko wtedy, gdy używasz ZEROFILL
opcja.
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)
Dobrze więc, że wprowadzająca w błąd „długość” jest teraz przestarzała i usunięta. Od wielu lat powoduje zamieszanie.