1

对于我的自动化验收测试,我希望插入以 id=1 开头。我在一台PC(XP 32bit,mysql 5.1.something)上实现了这一点(在从表中删除所有行之后),“alter table tableName auto_increment = 0”。

我现在正在设置一台新PC(Windows 7 64bit,mysql 5.1.42),这个命令似乎没有效果。我可以在 information_schema.tables 表中看到 auto_increment 值没有变回 0 --- 它只是不断上升。如果我尝试直接更改该表中的值,我会被告知拒绝访问“root”@“localhost”。这可能暗示我的问题吗?

其他 stackoverflow 人建议“从 tableName 截断”是一个不错的选择。我很高兴地报告这行得通。但是有谁知道为什么“alter table”命令不会重置 auto_increment?

谢谢!

4

1 回答 1

5

不知道为什么它在一台服务器上工作,而在另一台服务器上不起作用,但MySQL 手册指出 (引用,强调我的)

要更改 AUTO_INCREMENT 用于新行的计数器的值,请执行以下操作:

ALTER TABLE t2 AUTO_INCREMENT = value;

您不能将计数器重置为小于或等于任何已使用的值
对于 MyISAM,如果该值小于或等于当前AUTO_INCREMENT列中的最大值,则将该值重置为当前最大值加一。
对于 InnoDB,如果该值小于该列中当前的最大值,则不会发生错误,并且当前序列值不会改变。

也许这就是问题的原因:您正试图将auto_increment计数器恢复为 0,但它已经高于该值——并且由于您无法将其重置为小于任何已使用值的值,因此它不会不工作。

于 2010-01-09T10:19:28.627 回答