MySQL 5.1.42 alter table auto_increment = 0无效,截断有效

Joh*_*ohn 1 mysql truncate alter-table auto-increment

对于我的自动验收测试,我希望插入以id = 1开头。我在一台PC(XP 32位,mysql 5.1.something)上实现了此目的(从表中删除所有行之后),“更改表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吗?

谢谢!

Pas*_*TIN 5

不确定为什么它可以在一台服务器上运行,而不能在另一台服务器上运行,但是MySQL手册指出 (引用,重点是我的)

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

ALTER TABLE t2 AUTO_INCREMENT = value;
Run Code Online (Sandbox Code Playgroud)

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

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