Toto je změna zdokumentovaná v Poznámky k vydání MySQL 8.0.19 :
"Délka" celočíselného sloupce nic neznamená. Sloupec int(11)
je stejný jako int(2)
nebo int(40)
. Všechny mají pevnou velikost, 32bitový celočíselný datový typ. Podporují stejnou minimální a maximální hodnotu.
"Délka" celočíselných sloupců byla po léta matoucí funkcí MySQL. Je to pouze nápověda, která ovlivňuje šířku displeje, nikoli úložiště nebo rozsah hodnot. Prakticky záleží pouze na tom, když použijete ZEROFILL
možnost.
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)
Je tedy dobře, že zavádějící „délka“ celého čísla je nyní zastaralá a odstraněna. Po mnoho let to způsobilo zmatek.