我有下面的sql代码来创建一个表

CREATE TABLE db.object (
  `objid` bigint(20) NOT NULL AUTO_INCREMENT,
  `object_type` varchar(32) NOT NULL,
  PRIMARY KEY (`objid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

然而,objid中的值是1,2,3…(insert语句没有添加id)
不应该AUTO_INCREMENT=2使objid从2开始而不是从1开始

最佳答案

使用NONDB表,当打开表时,AUTO_INCREMENT值将重置为最大值(加1)。自动增量值只存在于内存中,不存在于磁盘上。
例如,当mysql实例关闭然后重新启动,并且对表进行引用时,将发生表打开。
一张桌子也可以在其他时间关闭。例如,当超过open_table_cache时(即当打开大量其他表时),mysql将关闭一些打开的表,以便在缓存中为新打开的表腾出空间。
我相信这种行为在mysql参考手册中有所记录。

08-17 09:16