Esta é uma mudança documentada no Notas de versão do MySQL 8.0.19 :
O "comprimento" de uma coluna inteira não significa nada. Uma coluna de
int(11)
é o mesmo que int(2)
ou int(40)
. Eles são todos um tipo de dados inteiro de 32 bits de tamanho fixo. Eles suportam o mesmo valor mínimo e máximo. O "comprimento" de colunas inteiras tem sido um recurso confuso do MySQL por anos. É apenas uma dica que afeta a largura da tela, não o armazenamento ou o intervalo de valores. Praticamente, só importa quando você usa o
ZEROFILL
opção. 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)
Portanto, é bom que o "comprimento" do inteiro enganoso agora esteja obsoleto e removido. Isso tem causado confusão por muitos anos.