Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
mysql自动增量在插入后跳过有效的数字范围…在表上选择_Mysql - Fatal编程技术网

mysql自动增量在插入后跳过有效的数字范围…在表上选择

mysql自动增量在插入后跳过有效的数字范围…在表上选择,mysql,Mysql,我的插入。。。SELECT query将2546条记录插入到一个表中,该表将所有插入记录的“我的ID”范围从176439增加到178984。成功插入所有记录(178984-176439+1=2546)。现在,如果启动我的应用程序并添加一条新记录,我的下一个ID将显示为180534。我不明白mysql没有设置为178985。如果我重复这个过程,类似的行为也会发生 我的innodb_autoinc_lock_模式默认设置为1,表示“连续” 有什么想法吗 记录数不必与自动递增id匹配。记录可能已被删除

我的插入。。。SELECT query将2546条记录插入到一个表中,该表将所有插入记录的“我的ID”范围从176439增加到178984。成功插入所有记录(178984-176439+1=2546)。现在,如果启动我的应用程序并添加一条新记录,我的下一个ID将显示为180534。我不明白mysql没有设置为178985。如果我重复这个过程,类似的行为也会发生

我的innodb_autoinc_lock_模式默认设置为1,表示“连续”


有什么想法吗

记录数不必与自动递增id匹配。记录可能已被删除。自动增量是手动或出于其他原因设置的。您可以使用此命令设置下一个id

ALTER TABLE tbl AUTO_INCREMENT = 178985;

之后,应在该数字上方生成ID。

是的,您运行了其他一些插入查询,行可能由于唯一约束而被拒绝,但auto increment仍在增加,或者在这之后被删除。或者,如果其他人(或您在另一个会话中)启动了事务,则插入一些行,但尚未提交。。。自动增量值也会更大。

您好,插入后没有删除任何记录。。选择-仅添加记录。我熟悉ALTER表,但更感兴趣的是为什么它跳过了如此大的数字范围。在执行大容量插入之后,我甚至关闭了Mysql Workbench以确保会话结束。可能该表上运行了一些用于插入和删除记录的触发器。该表上没有用于插入和删除记录的触发器。不,这是在localhost上,我是唯一的用户。我确认了SELECT计数与INSERT…SELECT row count,并且显示了相同数量的行(大容量插入后受影响的行)。我立即切换到我的应用程序,添加了一行,然后显示178985。Auto_increment适用于依次添加多行(已经有3年了),而不是在批量插入之后。好吧,一定发生了一些事情,我知道这些几乎都是可以更改的方式,再加上@juergend建议的方式。这里也一样,令人困惑。这个差距,1550,与我能想到的任何事情都无关。其他时候,差距是不同的(例如,在数百个)。它是可重复的。检查是否有任何ID高于当前的自动增量,如果是这种情况,则跳过是自然发生的。也许你在某个时候不小心损坏了一些ID。我希望这会是问题所在,但事实并非如此。我刚刚运行了“select*from table1,其中id>=178984;”,返回了两条记录—批量插入中的顶部记录和通过应用程序添加的单个记录。我想补充一点,查询的select部分的行数与运行insert…select后的行数(受影响的行数)相同。我在localhost上,并且是唯一的用户,在大容量插入之后,我不会删除其他行。