数据库:Mysql8.0+
问题描述场景:将A表的临时数据通过 Insert Select 语句批量插入到B表,然后清空A表。然后发现每次插入的第一个自增长id和上次插入的最后一个自增长id连不上,比如上次最后一个id是100,这次起始id就是104,中间几个自增长id不见了,而且一次 Insert Select 的数据越多,自增长跨度越大,具体原因不描述了,这是Mysql8.0开始的默认配置问题,个人不建议改这个配置,因为会降低数据库性能。
那么我喜欢暴力解决问题,你自增长不是跳吗?一巴掌啪回去。
1.首先获取表最大的自增长id,通过: SELECT @maxid:= MAX(id) FROM `table_name`;
2.在强制设置自增长起始到正确值,通过: ALTER TABLE `table_name` AUTO_INCREMENT = 刚刚获取的maxid ;