2011-10-15 22 views
5

Tôi có cơ sở dữ liệu mysql và tôi đang sử dụng nó như một lưu trữ tạm thời các giá trị captcha. Nó có một phím id tăng tự động, với trường int(11). Điều gì sẽ xảy ra nếu giá trị này lớn hơn 11 chữ số?Trường mysql int phát triển lớn hơn 11 chữ số

Trả lời

10

Một điển hình INT sử dụng 4 byte, vì vậy nó có thể lưu trữ những con số:
Signed: -2147483648 to 2147483647
Unsigned: 0 to 4294967295

Một bigint sử dụng 8 byte, vì vậy nó có thể lưu trữ những con số:
Đã ký: -9223372036854775808 to 9223372036854775808
Chưa được ký: 0 to 18446744073709551615

0

int(11) sẽ chỉ chấp nhận 11 chữ số đầu tiên. phần còn lại của chúng sẽ bị loại bỏ. Bạn có thể sửa đổi bảng và thay đổi kiểu dữ liệu id của bạn từ int thành bigint.

Hy vọng điều này sẽ hữu ích.

5

Số này (11) hoàn toàn không có gì để làm với phạm vi cột - [SIGNED] INTEGER xác định phạm vi (-2147483648 - 2147483647).

Số trong dấu ngoặc đơn chỉ được sử dụng khi kết hợp với ZEROFILL. Sau đó, nó xác định "độ dài" của số hiển thị, tức là. giá trị 275552 sẽ được trả lại là chuỗi00000275552.

0

Như những người khác đã nói, bạn sẽ không nhận được 11 chữ số. Khi bạn đạt đến giá trị tối đa, tất cả các giá trị vượt quá giá trị đó sẽ được coi như là giá trị tối đa. Trong trường hợp của lĩnh vực auto_increment, nó sẽ gây ra tất cả chèn tương lai thất bại cho đến khi bạn thay đổi kiểu cột vào một BIGINT:

ERROR 1062 (23000): Duplicate entry '4294967295' for key 1

0

Khi bạn đạt đến giá trị lớn nhất, tất cả các giá trị vượt quá đó sẽ được coi như thể chúng là giá trị tối đa. Trong trường hợp các trường auto_increment, nó sẽ khiến tất cả các lần chèn trong tương lai thất bại cho đến khi bạn thay đổi loại cột thành BIGINT:

Các vấn đề liên quan