关注 陈华博客 的朋友都知道,最近我在研究 基金投资 。程序员研究一门学问,自然不能止步于看一些表象数据,而是要获取数据之后自己分析。所以我最近在各大平台采集基金相关数据。

采集过程中自然遇到了很多问题,比如说采集的有些数据是有问题的,在数据入库的时候,自然会用到事务,遇到有问题的数据会回滚。这段时间我采集的数据总共有300多万,但是我查数据库的时候,发现一个表的自增id已经涨到了700多万,说明中间有很多次次回滚。

当然id很大并不影响业务,但是我目前还在采集数据阶段,id有断裂,不方便我分析问题。所以我就把id重新排了个序,这里给大家分享一下整个过程。

大概过程是:备份表 - 删除原id字段,重新添加自增id字段 - 设置自增起始值。

详细步骤如下:

1、备份表结构(对数据表操作之前备份一下是个好习惯)

create table table_name_copy like table_name;

2、备份表数据

insert into table_name_copy select * from table_name;

也可以使用navicat直接 ctrl+c ctrl+v

3、删除原来主键字段(如id)

alter table table_name drop id;

4、添加主键,自增,放在第一位

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

5、设置自增id

alter table table_name AUTO_INCREMENT=3140731;

6、删除备份。检查没问题的话,备份的表可以删了

delete from table_name_copy;

当然了,导致id断裂的原因,还是MySQL事务回滚,但是自增id还是会增加。以上方法只适用于没有id字段关联的场景。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/26