sql >> Databáze >  >> RDS >> Mysql

MySQL 8 ignoruje délky celých čísel

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.



  1. Jak zdokumentovat databázi SQL Server

  2. Odstraňování problémů se serverem SQL Server Always On Availability Group

  3. #1273 – Neznámé řazení:‚utf8mb4_unicode_520_ci‘

  4. Funkce CURRENT_TIMESTAMP() v Oracle