MySQL

Mysql重置主键自增值,Mysql让自增主键从1开始

04-07 11:30

Mysql主键设置自增后,自增值会一直按最大值计数,哪怕清空了数据表,再添加数据时,主键依旧从最大值开始


方式一:

使用以下命令,可以修改主键初试值:

#这种方法处理的好处是可以设置 auto_increment 为任意值开始自增,缺点是如果表列和数据较多,速度会很慢,比如100万条数据,执行速度可能在10分钟以上,所以注意使用场景

DELETE FROM 表名称;

ALTER TABLE 表名 AUTO_INCREMENT= 数字;

例如,如果想要将表 content 的id设置成从1开始

DELETE FROM content;

ALTER TABLE content AUTO_INCREMENT= 1;


方式二:

#直接一句话搞定,好处就是简单,auto_increment 值重新开始从1计数

truncate table 表名称


设置主键从 1 开始时,需要注意:

1、一般情况下我们使用第二个就可以了

2、在执行前,一定要清空数据,否则这个命令无用。因为一旦有数据,即便是你执行了命令,新insert的数据依然按照当前数据库的最大id来处理。


设置主键自增的起始值,并非1时,不用清空表,我在Mysql5.7中使用InnoDB时,表有大量数据的情况下,主键重置了较大的自增值,仍然有效。


当看到如下提示:Duplicate entry '***' for key 'PRIMARY',说明自增的主键已经存在,可能因为修改过主键的值,且现在自增的值已经和此值相同,导致冲突,此时可通过重置较大的主键值,解决此问题。


微信小程序
大潇博客 版权所有 Copyright ©2016~2026
京ICP备17004217号-6  合作QQ:284710375
天玺科技