如何重置 AUTO_INCREMENT
How to reset the AUTO_INCREMENT
我在网上搜索,没有找到不删除 auto_increment.But 字段的解决方案,我在 phpmyadmin 中指出,当我单击“选项”时,我看到 Auto_increment ,我试着把它放在 1 但没有任何改变。那么,是否有重置 auto_increment 的解决方案?
谢谢
PS : InnoDB
我不知道你所说的重置是什么意思?但是如果你设置了 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;
只要table上有数据就不能重置,否则需要先删除所有table。
ALTER TABLE tablename AUTO_INCREMENT = value;
执行以下查询:
改变TABLEyour table name
auto_increment = 1;
在每个人都对任何人是否应该有重置 AUTO_INCREMENT 计数器的正当理由感到骄傲之前,在某些情况下它是有意义的。生产数据库不是这个地方,但开发和 QA 环境是不同的。
我已经为开发环境中的 Fixtures 创建了自己的代码,更不用说需要反复清除的单元测试数据库了。有时您希望能够截断表而不是进行完整的重新创建。
这是一个完全合理的请求,并且可能有充分的理由,特别是如果您正在计算字节数并使用 UNSIGNED tinyint 和类似的字节优化与您的一些外键。
如前所述,解决方案是:
ALTER TABLE tablename AUTO_INCREMENT = 1
但是,如果定义了外键约束,这将不起作用。
InnoDB 约束的神奇之处 "get around fk constraints and other chicken-and-egg problems" 是:
SET foreign_key_checks = 0;
当事情按照您需要的方式归零后,您可以通过以下方式重新打开约束检查:
SET foreign_key_checks = 1;
这似乎是 OP 遇到的实际问题。
DBCC CHECKIDENT ('tablename', RESEED, 0);
我在网上搜索,没有找到不删除 auto_increment.But 字段的解决方案,我在 phpmyadmin 中指出,当我单击“选项”时,我看到 Auto_increment ,我试着把它放在 1 但没有任何改变。那么,是否有重置 auto_increment 的解决方案?
谢谢
PS : InnoDB
我不知道你所说的重置是什么意思?但是如果你设置了 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;
只要table上有数据就不能重置,否则需要先删除所有table。
ALTER TABLE tablename AUTO_INCREMENT = value;
执行以下查询:
改变TABLEyour table name
auto_increment = 1;
在每个人都对任何人是否应该有重置 AUTO_INCREMENT 计数器的正当理由感到骄傲之前,在某些情况下它是有意义的。生产数据库不是这个地方,但开发和 QA 环境是不同的。
我已经为开发环境中的 Fixtures 创建了自己的代码,更不用说需要反复清除的单元测试数据库了。有时您希望能够截断表而不是进行完整的重新创建。
这是一个完全合理的请求,并且可能有充分的理由,特别是如果您正在计算字节数并使用 UNSIGNED tinyint 和类似的字节优化与您的一些外键。
如前所述,解决方案是:
ALTER TABLE tablename AUTO_INCREMENT = 1
但是,如果定义了外键约束,这将不起作用。
InnoDB 约束的神奇之处 "get around fk constraints and other chicken-and-egg problems" 是:
SET foreign_key_checks = 0;
当事情按照您需要的方式归零后,您可以通过以下方式重新打开约束检查:
SET foreign_key_checks = 1;
这似乎是 OP 遇到的实际问题。
DBCC CHECKIDENT ('tablename', RESEED, 0);