我在网上搜索过,如果没有删除auto_increment字段,我就找不到解决方案。但是,我在phpmyadmin中说,当我点击选项时,我看到了Auto_increment,我试着把它放在1中但没有改变。那么,是否有重置auto_increment的解决方案?
由于
PS:InnoDB
答案 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;