繁体   English   中英

如何重设AUTO_INCREMENT

[英]How to reset the AUTO_INCREMENT

我在网上搜索后发现找不到要删除的字段auto_increment的解决方案。但是,我指出在phpmyadmin中,当我单击“选项”时,我看到了Auto_increment,我尝试将其设置为1,但没有做任何更改。 那么,有没有办法重置auto_increment?

谢谢

PS:InnoDB

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

我不确定重置是什么意思? 但是如果您设置了AUTO_INCREMENT,现在想删除它。 您可以使用此:

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

如果您想重新计票:

ALTER TABLE tablename AUTO_INCREMENT = 1

创新数据库

ALTER TABLE a AUTO_INCREMENT=1 ENGINE=innoDB;

在每个人都开始思考是否有人应该有一个重置AUTO_INCREMENT计数器的正当理由之前,有一些可行的方案。 生产数据库不是解决这个问题的地方,但是开发和QA环境是不同的。

我已经创建了代码来自己在开发环境中针对夹具执行此操作,更不用说需要反复清除的单元测试数据库了。 有时,您希望能够截断表而不是进行完整的娱乐。

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

如前所述,解决方案是:

ALTER TABLE tablename AUTO_INCREMENT = 1

但是,如果定义了外键约束,则此方法将无效。

InnoDB约束可能发生的魔术“避开fk约束和其他鸡与蛋的问题”是:

SET foreign_key_checks = 0;

当一切归零后,您可以使用以下方法重新启用约束检查:

SET foreign_key_checks = 1;

看来这可能是OP遇到的实际问题。

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

ALTER TABLE tablename AUTO_INCREMENT = value;

执行以下查询:

ALTER TABLE your table name auto_increment = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM