简单粗暴的让mysql主键id重新排序


运行环境 Runtime environment

1
2
3
4
操作系统: Windos10  
IDE: pycharm 2021.3.1 x64
语言: python v3.8
框架: xxx

背景

简单粗暴的让mysql主键id重新排序。

采集数据入库的时候,偶尔会出现数据入库失败,导致事务回滚的情况。

当mysql表中存在自增id字段,就会出现id断续的情况。

强迫症看着难受。

思路

使用SQL语句,备份表,删除id自增键,重新创建id自增键。

解决方案

  1. 备份表结构

create table table_bak like table_name;

  1. 备份表数据

insert into table_bak select * from table_name;

  1. 删除原来主键字段(如id)

alter table table_name drop id;

  1. 添加主键,自增,放在第一位

alter table table_name add id int(11) primary key auto_increment first;

  1. 检查没问题的话,即可清理备份表

drop table table_name;

总结

一般在生产,当中任何删除操作都是有风险的。

必须确保其它业务表,不会与该表的自增字段有关联。

如果是表中数据量达到千万级以上,这样的做法是不推荐的。

但是,目前我处理的数据还只是数十万级,且表是独立的没有外部关联,还算hold得住。