数据库报duplicate XXX entry for key primary错误的可能原因以及解决方法

今天在使用数据库的过程中,发现一直报duplicate entry for key primary的错误,如下图所示:
在这里插入图片描述
这个问题直译过来就是主键设置重复,或者说是主键冲突,因为第一次碰到这样的问题,有些不明所以,就在网上查了一些资料,发现了这么一篇文章 ======> 这是文章链接
其中说到这种情况的可能原因有两种:

  • 主键没有设置自增
  • 插入线程频率较高,没有处理好事务,造成插入sql执行顺序混乱

该文章中也给予了对应的解决方案,可以参考。

不过这篇文章中所说到的情况并不适应于我今天遇到的问题,不过给了我一点启发,在查看数据库定义的过程中,发现id的类型是int(11),然后我就查了一下int(11)所能表示的最大值,然后找到了这个:
在这里插入图片描述
参考链接
然后我查看了一下数据库的条目个数,发现已经到达了2147483647,如下图所示:
在这里插入图片描述

这一下就找到了问题所在,这张表格里面能够存放的条目个数已经达到了最大值,此时id无法继续增加,这就导致默认还会使用2147483647这个id,这就造成了主键冲突

解决方法就是将这个id的类型从int变成了bigint

CREATE TABLE IF NOT EXISTS xxxxxxxxxxxx
(
	id 	BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 	#主键
	......
);

主键冲突其他参考链接
数据库长度其他参考链接
int、bigint参考率链接

  • 14
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值