我有一个mysql数据库,我正在使用它作为临时存储验证码值。它有一个自动递增的id键,带有int(11)
字段。如果此值大于11位,会发生什么?
答案 0 :(得分:10)
典型的 INT 使用4个字节,因此可以存储数字:
签名:-2147483648 to 2147483647
未签名:0 to 4294967295
BIGINT 使用8个字节,因此可以存储数字:
签名:-9223372036854775808 to 9223372036854775808
未签名:0 to 18446744073709551615
答案 1 :(得分:5)
此数字(11
)与列范围完全无关 - [SIGNED] INTEGER
定义范围(-2147483648 - 2147483647
)。
括号内的数字仅在与ZEROFILL
结合使用时才会使用。然后它定义显示数字的“长度”,即。值275552
将作为字符串 00000275552
返回。
答案 2 :(得分:0)
int(11)
只接受前11位数字。其余的将被丢弃。
您可以修改表并将id数据类型从int更改为bigint
。
希望这有帮助。
答案 3 :(得分:0)
正如其他人所说,你不会得到11位数。当您达到最大值时,超出它的所有值都将被视为最大值。对于auto_increment字段,在将列类型更改为BIGINT
之前,它将导致所有将来的插入失败:
ERROR 1062 (23000): Duplicate entry '4294967295' for key 1
答案 4 :(得分:0)
当您达到最大值时,超出它的所有值都将被视为最大值。对于auto_increment字段,在将列类型更改为BIGINT之前,它将导致所有将来的插入失败: