mysql数据库自增id,删除数据后id不连续,出现断层

本文介绍了MySQL数据库中自增ID在删除数据后出现不连续现象的原因,即自增主键计数器仅在内存中维护,数据库重启时会根据最大ID继续增长。为避免ID断层,可以重启数据库或使用SQL语句指定自增起始值。解决方法包括理解自增ID的工作原理和适时调整自增ID设置。
摘要由CSDN通过智能技术生成

mysql数据库自增id,删除数据后id不连续,出现断层

  1. 当删除前几条数据,数据库重启与不重启,自增的id会延续最大的id然后继续走下去,会出现断层;
  2. 当删除中间几条数据,数据库重启与不重启,自增的id会延续最大的id然后继续走下去,会出现断层;
  3. 当删除后几条数据,数据库不重启,自增的id会延续最大的id然后继续走下去,会出现断层;
  4. 当删除后几条数据,数据库重启,自增的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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
+++++++++++++++++++++++++++++++++++++++++++++++++
此文章仅记录一下。
如需删除请联系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值