Đây là thay đổi được ghi lại trong Ghi chú phát hành MySQL 8.0.19 :
"Chiều dài" của một cột số nguyên không có nghĩa gì cả. Một cột của int(11)
giống với int(2)
hoặc int(40)
. Tất cả chúng đều là kiểu dữ liệu số nguyên 32 bit có kích thước cố định. Chúng hỗ trợ cùng một giá trị tối thiểu và tối đa.
"Chiều dài" của các cột số nguyên là một đặc điểm khó hiểu của MySQL trong nhiều năm. Nó chỉ là một gợi ý ảnh hưởng đến chiều rộng hiển thị, không ảnh hưởng đến bộ nhớ hoặc phạm vi giá trị. Thực tế, nó chỉ quan trọng khi bạn sử dụng ZEROFILL
tùy chọn.
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)
Vì vậy, thật tốt khi số nguyên gây hiểu lầm "length" hiện không được chấp nhận và bị loại bỏ. Nó đã gây ra sự nhầm lẫn trong nhiều năm.