开发者

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_numbeandroidr:=@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 (34999999HcvyJtwHtg,'test');
r编程客栈ollback;

2、查看修改后的值

show tables  

编程客栈此这篇关于MySQL 设置AUTO_INCREMENT 无效的问题解决的文章就介绍到这了,更多相关MySQL AUTO_INCREMENT 无效内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下编程客栈面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新数据库

数据库排行榜