mysql数据库自增id,删除数据后id不连续,出现断层
- 当删除前几条数据,数据库重启与不重启,自增的id会延续最大的id然后继续走下去,会出现断层;
- 当删除中间几条数据,数据库重启与不重启,自增的id会延续最大的id然后继续走下去,会出现断层;
- 当删除后几条数据,数据库不重启,自增的id会延续最大的id然后继续走下去,会出现断层;
- 当删除后几条数据,数据库重启,自增的id会连续,不会出现断层。
总之只要保证最大的一个id不删除,数据库重启不重启,对于新添加的数据都是没有影响的,还是会延续最大的id然后继续走下去
原因:这就是自增主键没有持久化的bug。究其原因,在于自增主键的分配,是由InnoDB数据字典内部一个计数器来决定的,而该计数器只在内存中维护,并不会持久化到磁盘中。当数据库重启时,该计数器会通过下面这种方式初始化。
SELECT MAX(ai_col) FROM table_name FOR UPDATE;
办法:
1.根据情况,重启数据库
2.使用生sql语句修改为从某个数据开始自增:
alter table [表名] auto_increment=[起始数据];
作者:塞外务农
链接:https://www.jianshu.com/p/68b2cae7e5ed
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
+++++++++++++++++++++++++++++++++++++++++++++++++
此文章仅记录一下。
如需删除请联系。