Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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,我有一个名为order的表,它的一个列名“id”设置为自动递增,自动递增id从6999跳到9090000,间隙为9090000-6999,只是想知道它是如何发生的?如果插入时将id指定为9090000,则自动递增值会相应调整。这样做是为了防止以后id可能最终命中较大数字时发生冲突 如果以后删除了较大的id,则对自动增量的更改将保持不变 可以按如下方式显式设置: alter table mytable auto_increment = 9090000 在插入元素并删除它们之前,您是否有时会在不

我有一个名为order的表,它的一个列名“id”设置为自动递增,自动递增id从6999跳到9090000,间隙为9090000-6999,只是想知道它是如何发生的?

如果插入时将id指定为9090000,则自动递增值会相应调整。这样做是为了防止以后id可能最终命中较大数字时发生冲突

如果以后删除了较大的id,则对自动增量的更改将保持不变


可以按如下方式显式设置:

alter table mytable auto_increment = 9090000

在插入元素并删除它们之前,您是否有时会在不截断整个表的情况下再次插入元素并删除它们?这可能很有用不,我没有做过任何这样的事情,因为它是我的live db。。!如果要消除间隙,可以手动重置自动增量值,然后优化表。不,我没有直接指定任何内容,可能是其他人指定的,或者是您的应用程序由于错误而无意中指定的。另请参阅edit to answer以了解如何显式设置它。这种情况很可能是由于程序中的错误造成的,例如,我的数据库中有一个日志表,用于记录和调试。突然,当我创建一个新订单时,它的id应该是5左右,但它的id是7965,这是因为我使用了
PDO::lastInsertId()
来获取订单的最新插入id,但这被更改为日志的id。