如何重置AUTO_INCREMENT

时间:2015-08-28 07:36:16

标签: mysql sql phpmyadmin

我在网上搜索过,如果没有删除auto_increment字段,我就找不到解决方案。但是,我在phpmyadmin中说,当我点击选项时,我看到了Auto_increment,我试着把它放在1中但没有改变。那么,是否有重置auto_increment的解决方案?

由于

PS:InnoDB

5 个答案:

答案 0 :(得分:2)

DBCC CHECKIDENT(' tablename',RESEED,0);

答案 1 :(得分:1)

我不确定你的意思是重置?但如果您设置了AUTO_INCREMENT,现在要删除它。你可以用这个:

ALTER TABLE mytable CHANGE my_col my_col INT(10) UNSIGNED NOT NULL

如果你想留下柜台:

ALTER TABLE tablename AUTO_INCREMENT = 1

InnoDB的

ALTER TABLE a AUTO_INCREMENT=1 ENGINE=innoDB;

答案 2 :(得分:1)

在每个人都认识到是否有人有理由重置AUTO_INCREMENT计数器之前,有很多事情可以解决问题。生产数据库不是这个地方,但开发和QA环境是不同的。

我已经为开发环境中的Fixtures创建了自己的代码,更不用说需要重复清除的单元测试数据库了。有时您希望能够截断表而不是完成重新创建。

这是一个完全合理的请求,并且可能有充分的理由,特别是如果您计算字节数并使用UNSIGNED tinyint和类似的字节优化与一些外键。

如上所述,解决方案是:

ALTER TABLE tablename AUTO_INCREMENT = 1

但是,如果定义了外键约束,这将不起作用。

魔术"绕过fk约​​束和其他鸡蛋问题" InnoDB约束可能发生的事情是:

SET foreign_key_checks = 0;

当事情按照您需要的方式归零时,您可以重新启用约束检查:

SET foreign_key_checks = 1;

这似乎可能是OP所面临的实际问题。

答案 3 :(得分:0)

只要表上有数据就无法重置,否则您需要先删除所有表。

ALTER TABLE tablename AUTO_INCREMENT = value;

答案 4 :(得分:0)

执行以下查询:

ALTER TABLE your table name  auto_increment = 1;