报错 1062:Duplicate entry '4294967295' for key 'PRIMARY'

hudi
  • 946

我数据库这个数据才几十万条 主键是 int 11 然后以前能插入 现在插入 就会报这个错误
求解答 谢谢

评论
阅读 2.4k
3 个回答

首先说讲清楚几个概念

  1. int(11) 和int(3) 存储的值的最终大小是一样的,这个3和11 是在终端显示的时候数字长度,和存储数字大小和长度无关

  2. 11万的数据,你的主键应该不是步长加1,或者你id也可能不是自增0开始的。

  3. 还有楼上的已经说清楚原因,说是主键的值重复,那就先去数据库找找这条记录,然后再看看 10多万的数据,怎么主键到了4294967295

  4. 2的32次方=4294967296(无符号),带符号再除以2,负数比正数多一个,-2147483648~+2147483647 int型无符号 4294967296 最大值

这说是键重复了,试试这个,不保证有用····
step 1: select max(your primary_key_field) from your_table_name;
step 2: ALTER TABLE your_table_name AUTO_INCREMENT = value_u_got_from_step1 + 1;

id自增已达上限,再插入数据也只能插入这个id值,所以才会冲突,改成bigint类型即可,十几万数据就自增到这个值,你要检查一下你的自增规则和业务逻辑,否则按你的速度很快还会到上限

撰写回答

登录后参与交流、获取后续更新提醒

宣传栏