Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL AUTO_INCREMENT 无效

MySQL 设置AUTO_INCREMENT 无效的问题解决

作者:辣机堆找辣机

本文主要介绍了MySQL 设置AUTO_INCREMENT 无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、修改 AUTO_INCREMENT 的值。

执行 sql 如下,“tablename” 为数据表名称。

注意:修改的 auto_increment 的值得大于现有主键的最大值。否则,语句不报错,但不会生效(这里需要特别注意,我之前一直没成功是因为表里有一个很大的值20284665,需要更改到数据表最大数量值)。
可以尝试-目录是重置数据的id(执行前备份CREATE TABLE tablename_back AS SELECT * FROM tablename;)
SET @row_number = 0;
UPDATE tablename SET id = (@row_number:=@row_number + 1);
这种方法线上环境慎用,开放环境需进行多次验证

ALTER TABLE tablename AUTO_INCREMENT=1001;

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

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

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

analyze table tablename;

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

快速设置Mysql的auto_increment参数

在使用mysql时,在导入数据后经常需要修改auto_increment参数,如果数据比较多时,执行效果非常缓慢。在3500万数据表上修改auto_increment参数,大概需要10分17秒(本地mac机器上测试,在服务器稍微好点,但是也很慢),通过摸索,发现另外一个方法可以巧妙的设置auto_increment参数。

以表A为例,说明如何设置auto_increment 的值为3500万。

1、利用insert语句修改auto_increment值,再利用回滚去掉插入数据,但是修改后的auto_increment值不会被回滚

begin work;
insert into A(id,field) values (34999999,'test');
rollback;

2、查看修改后的值

show tables  

到此这篇关于MySQL 设置AUTO_INCREMENT 无效的问题解决的文章就介绍到这了,更多相关MySQL AUTO_INCREMENT 无效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文