【发布时间】:2016-04-16 09:48:32
【问题描述】:
在 MyISAM 表中插入一行时遇到了最奇怪的问题。
insert into mytable (id, status, code) values (2534480091, 0, '253448009')
#1062 - 键“PRIMARY”的重复条目“2147483647”
为什么 id 应该为 2534480091 插入 id 2147483647?在运行此查询之前,我已确保 id 可用:
select id from mytable where id = 2534480091 limit 1;"
结构
`id` int(11) NOT NULL AUTO_INCREMENT,
`status` tinyint(1) NOT NULL,
`code` varchar(64) NOT NULL,
索引
PRIMARY KEY (`id`),
KEY `status` (`status`),
KEY `code` (`code`),
我已尝试截断表格,检查错误并修复表格。似乎没有任何效果。
它背后的 PHP 代码没有任何问题。在 phpMyAdmin 中手动传递此查询会显示完全相同的错误。
发生了什么事?
【问题讨论】:
-
The number 2,147,483,647 (or hexadecimal 7FFF,FFFF) is the maximum positive value for a 32-bit signed binary integer -
使用long int,int太大,所以只会考虑id作为int的最大值
-
谢谢,我真的以为 int(11) 是 11 位数字。