我正在尝试建立一个脚本以在数据库中生成一组特定的测试数据,在该脚本的开头,我想清除有关表而不删除约束(因为测试数据不是重建约束的适当位置)并为每个表重置AUTO_INCREMENT,因为如果可以硬编码许多ID,则设置测试数据要简单得多。
例如,我有两个这样的语句(几乎每个表都有一对):
DELETE FROM AppointmentAttr ALTER TABLE AppointmentAttr AUTO_INCREMENT = 1
并且在删除记录时,即使我能找到的所有文档和SO回答都表明这应该可行,但auto-increment值也不会恢复为1。
如果我在MySQL Workbench中执行相同的语句,它也不会还原它。
这是在INNODB数据库上。
我想念什么?
(注意:由于存在约束,我无法使用TRUNCATE)。
MySQL不允许您减小AUTO_INCREMENT值,如下所示:http : //dev.mysql.com/doc/refman/5.6/en/alter- table.html
您不能将计数器重置为小于或等于当前使用的值。对于InnoDB和MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前的最大AUTO_INCREMENT列值加1。
即使有您的限制,我也会尝试以下方法之一:
OP的注释:这就是我需要的(1)。