【问题标题】:MysQL ignores int value - Duplicate entry for key 'PRIMARY' [duplicate]Mysql 忽略 int 值 - 键“PRIMARY”的重复条目 [重复]
【发布时间】: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 位数字。

标签: php mysql mysqli insert


【解决方案1】:

2147483647 是最大 int 值。要使用更大的数字,您需要将其声明为 bigint。

【讨论】:

  • 谢谢理查德。这解释了很多并解决了我的问题。 :)
猜你喜欢
  • 2015-09-13
  • 1970-01-01
  • 2012-08-18
  • 2012-08-24
  • 2017-02-17
  • 2012-07-23
  • 2013-09-30
相关资源
最近更新 更多