Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mySQL自动递增重复条目';4294967295';_Php_Mysql_Laravel - Fatal编程技术网

Php mySQL自动递增重复条目';4294967295';

Php mySQL自动递增重复条目';4294967295';,php,mysql,laravel,Php,Mysql,Laravel,我有用户表 我试图在空的users表中插入两行 (不是包含现有行的表) 插入数据时,它将第一个数据的id(主键int(10)unsigned autoincrement)插入为4294967295。插入第二个数据时,它导致完整性约束:重复条目“4294967295”,因为无法插入大于4294967295的值 我试着放下桌子,重新创建(虽然这不是正确的方法),效果很好 我需要知道发生的原因和解决方法 id (primary key BIGINT(10) unsigned autoincrement

我有用户表

我试图在空的users表中插入两行 (不是包含现有行的表

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

我试着放下桌子,重新创建(虽然这不是正确的方法),效果很好

我需要知道发生的原因和解决方法

id (primary key BIGINT(10) unsigned autoincrement)
整数范围为-2^32到2^32。
因此,如果需要大于int=2^32的值,可以使用范围为-2^64到2^64的bigint。

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

Query("INSERT INTO prod_categorie (categorieID, parentID) VALUES (?, ?)", array($chkParent, $txtParentCategorie));
应该是公正的

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

整数有32位,因此最大值为

2^32 = 4294967295
因此,如果需要更多,则需要另一种类型,如bigint

$this->bigIncrements('id');

将使用bigint作为增量。

由于自动增量值已达到其最大值,因此会导致此错误

这可能是因为你有太多的记录,也可能是因为你犯了一个错误

这通常发生在意外插入新记录并提供自动增量值时

大多数情况下,这是因为您有一个名称类似的列,并且您输入了一个错误,导致自动增量值更新为您提供的值,如果您提供的是字符串而不是int,则自动增量值为4294967295

要解决这个问题:

  • 删除主键值为4294967295的记录
  • 通过运行检查最大增量值是多少
  • 通过运行更新您的自动增量值

您是否有4294967295个条目,或者数量更少,因此当您创建新表时,它会给它们所有新的
id
s?我不知道为什么这个问题会被否决。它实际上是有效的,对于不熟悉整数大小的人或不是有经验的开发人员的人来说,这是很难破解的。投票时请不要做傻子。我希望你能找到解决办法。基本上,您超过了可用的数字。您必须更改表并使列成为
bigint
。仅供参考,我知道数据类型的范围。。我第一次插入了行..实际上,该行的ID应该是1和2..有一个函数用于此,更新了我的anserSomething,然后在创建表时出错。你超过了数字。您是否也可以包括您的迁移?你知道如何管理MySQL吗?您可以使用PHPMyAdmin或类似工具(如果您不知道如何使用mysql终端)来检查自动增量设置的起始位置。不,我没有指定自动增量字段,但我仍然没有得到这个问题的答案。您能详细说明您的答案吗?这是正确的,但原因没有包括在内。
select max(autoincrementColumNameHere) from tableNameHere
 ALTER TABLE tableNameHere AUTO_INCREMENT = (maxValue+1)