sql >> Database teknologi >  >> RDS >> Mysql

MySQL 8 ignorerer heltalslængder

Dette er en ændring, der er dokumenteret i MySQL 8.0.19 release notes :

"Længden" af en heltalskolonne betyder ikke noget. En kolonne med int(11) er det samme som int(2) eller int(40) . De er alle en 32-bit heltalsdatatype i fast størrelse. De understøtter den samme minimums- og maksimumværdi.

"Længden" af heltalskolonner har været et forvirrende træk ved MySQL i årevis. Det er kun et tip, der påvirker skærmbredden, ikke lagringen eller rækkevidden af ​​værdier. I praksis er det kun vigtigt, når du bruger ZEROFILL mulighed.

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)

Så det er en god ting, at det vildledende heltal "længde" nu er forældet og fjernet. Det har skabt forvirring i mange år.



  1. At bruge utf8 eller ej - MySQL- og PHP-tegnkodningsproblem

  2. Opdater mysql-tabel med udvalgt forespørgsel fra en anden database

  3. MySQL-forespørgsel med betinget erklæring?

  4. Sådan sletter du en mysql-post med jquery