首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >键'PRIMARY‘的条目重复-即使它设置为AUTO_INCREMENT

键'PRIMARY‘的条目重复-即使它设置为AUTO_INCREMENT
EN

Stack Overflow用户
提问于 2021-02-19 17:03:28
回答 1查看 374关注 0票数 1

这有点奇怪--我已经有8年没有修改这个网站的配置、数据库和PHP代码了。我为之制作的人一直在添加、删除、更改股票,没有任何问题,但今天突然收到了这个错误:

代码语言:javascript
运行
复制
Duplicate entry '2541' for key 'PRIMARY'

执行(为文本插入泛型值):

代码语言:javascript
运行
复制
INSERT INTO stock (id,title,category,description,price,last_update,sold) VALUES(NULL,'Item name','72','Item description','0',1613723525,'no')

搜索似乎表明,当主键没有设置为自动增量时,这是一个常见的问题-这是有意义的。然而,通过phpMyAdmin查看它,它肯定是。

索引中是否有某些内容被设置为主索引而不是唯一索引?

数据库中还有另外5个表,但没有一个是链接的(通过SQL的硬链接,PHP处理所有的交叉表内容)。

我检查了一下,确实在stock表中已经有一个ID为2541的项目。那么为什么NULL是自动_

是否将增量值转换为现有id?

编辑

我注意到我最近创建的一个表(可能是通过MySQL工作台)具有不同的索引设置,添加了一个

索引-我是否需要在stock表上出现一个引起问题的索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-19 20:23:51

根据您的描述和您的评论“有趣的是,每次我刷新ID时,它都试图插入(但失败了)增量1",我怀疑该表的自动增量的种子不知何故被更改为以前插入的某个值。

我不知道这到底是怎么回事。

现在,每次您尝试插入一条记录时,此内部计数器都会递增,因此您会在错误消息中看到数字递增(2541,2542,...)当您尝试插入行时,无论事务是否提交到数据库,内部计数器都会递增。在本例中,插入操作被回滚,因为生成的值违反了唯一约束,并且内部计数器不断增长。

要更改种子,可以运行以下语句:

代码语言:javascript
运行
复制
ALTER TABLE stock AUTO_INCREMENT=1234567;

您需要将其设置为表中存在的当前最大值,以便系统尝试插入的新条目不会冲突。

另请参阅如何在MySQL中设置初始值和自动递增?

这个答案说明如何在MySQL工作台和PhpMyAdmin中更改自动增量种子。也许有人不小心做了这件事,却没有注意到。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66274541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档