mySQL自动增量重复条目'4294967295'

时间:2015-10-09 17:38:27

标签: php mysql laravel

我有用户表。

我尝试在空用户表中插入两行 (不是包含现有行的表格)。

插入数据时,它将第一个数据的 id(主键int(10)unsigned autoincrement)插入为 4294967295 。插入第二个数据时,它导致< strong>完整性约束:重复条目“4294967295”,因为无法插入大于4294967295的值。

我尝试放下桌子并再次创建(虽然不是正确的方法),但它运行良好。

我需要知道为什么会这样?以及解决方案。

3 个答案:

答案 0 :(得分:3)

整数有32位,所以你的最大值是

2^32 = 4294967295

因此,如果你需要更多,你需要像bigint这样的其他类型。

$this->bigIncrements('id');

将使用bigint作为增量。

答案 1 :(得分:0)

当插入带有自动增量字段的表时,根本不应指定自动增量字段本身。在示例中,categorieID是主键

Query("INSERT INTO prod_categorie (categorieID, parentID) VALUES (?, ?)", array($chkParent, $txtParentCategorie));

应该只是

Query("INSERT INTO prod_categorie (parentID) VALUES (?)", array($txtParentCategorie));

答案 2 :(得分:0)

导致错误是因为auto_increment值已达到其最大值。

可能是因为你有太多记录,或者是因为你犯了错误。

当您意外插入新记录并提供auto_increment值时,通常会发生这种情况。

大部分时间都是因为你有一个名字相似的列,并且你输入的拼写错误导致auto_increment值更新了你提供的值,如果你提供的是字符串而不是int,则为4294967295。

解决这个问题:

  • 删除PK值为4294967295的记录,
  • 运行
  • 检查最大增量值是多少
select max(autoincrementColumNameHere) from tableNameHere
  • 运行
  • 更新您的AUTO_INCREMENT值
 ALTER TABLE tableNameHere AUTO_INCREMENT = (maxValue+1)