mysql8.0 InnoDB引擎修改AUTO_INCREMENT的问题

事情背景:一个项目中,有用户发了几万条违规内容,从数据库中删除内容之后,内容的主键ID跳跃太大了,所以需要重新修改主键的自增值,也就是AUTO_INCREMENT的值。然而修改AUTO_INCREMENT的值本来是个驾轻就熟的小事,没想到突然发现改了没反应,重启也无效。然后我研究了一下,感觉跟数据库版本有关,因为这个项目用的是Mysql8.0版本InnoDB引擎,最后搜索研究了一下将问题解决。

一、先按正常方法修改AUTO_INCREMENT的值。执行sql如下,“k_tablename”为数据表名称,需要注意修改的auto_increment的值得大于现有主键的最大值。

ALTER TABLE k_tablename auto_increment=1234;

二、修改后查询一下auto_increment的值,执行下面sql可查询(结果发现还是修改之前的值)

SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name="k_tablename";

三、分析数据表。重新分析一下数据表即可,执行如下sql。

analyze table k_tablename;

分析数据表之后,在执行第二步中的查询即可看到auto_increment的值修改成功。

本文完,谢谢观赏。

分类:代码 标签:
发表评论

电子邮件地址不会被公开。 必填项已用*标注