Mysql 5.1.42 alter table auto_increment = 0不起作用,truncate确实有效

时间:2010-01-09 10:07:04

标签: mysql auto-increment truncate alter-table

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:5)

不确定为什么它在一台服务器上工作,而在另一台服务器上不起作用,但是MySQL manual states (引用,强调我的)

  

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

ALTER TABLE t2 AUTO_INCREMENT = value;
     

您无法将计数器重置为小于或等于任何值的值   已被使用
对   MyISAM,如果值小于或   等于当前的最大值   在AUTO_INCREMENT列中,   值重置为当前最大值   加一个。
对于InnoDB,如果是值   小于当前的最大值   在列中,没有发生错误和   当前序列值不会改变。

也许这就是问题的原因:你试图将auto_increment计数器重新置于0,但它已经高于该值 - 并且因为你无法将其重置为小于任何值的值已经使用过,它不起作用。