本文主要是介绍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_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'); rChina编程ollback;
2、查看修改后的值
show tables
到编程China编程此这篇关于MySQL 设置AUTO_INCREMENT 无效的问题解决的文章就介绍到这了,更多相关MySQL AUTO_INCREMENT 无效内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下China编程面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!
这篇关于MySQL 设置AUTO_INCREMENT 无效的问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!