我数据库这个数据才几十万条 主键是 int 11 然后以前能插入 现在插入 就会报这个错误 求解答 谢谢
首先说讲清楚几个概念
int(11) 和int(3) 存储的值的最终大小是一样的,这个3和11 是在终端显示的时候数字长度,和存储数字大小和长度无关
11万的数据,你的主键应该不是步长加1,或者你id也可能不是自增0开始的。
还有楼上的已经说清楚原因,说是主键的值重复,那就先去数据库找找这条记录,然后再看看 10多万的数据,怎么主键到了4294967295
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类型即可,十几万数据就自增到这个值,你要检查一下你的自增规则和业务逻辑,否则按你的速度很快还会到上限
首先说讲清楚几个概念
int(11) 和int(3) 存储的值的最终大小是一样的,这个3和11 是在终端显示的时候数字长度,和存储数字大小和长度无关
11万的数据,你的主键应该不是步长加1,或者你id也可能不是自增0开始的。
还有楼上的已经说清楚原因,说是主键的值重复,那就先去数据库找找这条记录,然后再看看 10多万的数据,怎么主键到了4294967295
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类型即可,十几万数据就自增到这个值,你要检查一下你的自增规则和业务逻辑,否则按你的速度很快还会到上限