有关我的自动化验收测试,我想插入开始与ID = 1。 我实现这一个PC(XP 32位,MySQL的5.1.something)上, “改变表TABLENAME AUTO_INCREMENT = 0”。

(从表中删除所有行之后)

我现在建立一个新的PC(Windows 7的64位,MySQL的42年1月5日),和该命令似乎没有任何效果。 我可以在INFORMATION_SCHEMA.TABLES表中看到,AUTO_INCREMENT值不改回0 ---它只是不断上升。如果我试图改变该表直接的价值,我被告知拒绝访问“根” @“localhost”的。这是否也许我的问题给出提示?

其他计算器人曾建议,“从表名截断”是一个很好的选择。我很高兴向大家报告,这工作。但没有人知道为什么“ALTER TABLE”命令不会重置AUTO_INCREMENT?

谢谢!

有帮助吗?

解决方案

不知道为什么它的工作在一台服务器上,并在其他不工作,但的 MySQL手册状态 (引用,重点煤矿)

  

要改变的值   使用AUTO_INCREMENT计数器   对于新的行,这样做:

ALTER TABLE t2 AUTO_INCREMENT = value;
     

您不能将计数器复位到小于或等于任何一个值,该值   已经使用即可。结果,对于   MyISAM的,如果该值小于或   等于最大值目前   在AUTO_INCREMENT列中,   值被重置为当前的最大   加一。结果对于InnoDB,如果该值   小于电流最大值   在列,则不会发生错误,并且   当前序列值也不改变。

也许这就是问题的原因:你正在试图把auto_increment计数器回到0,但它已经高于该值 - 并且你不能将其重置为使用小于一个已经被使用的任意值的值,这是行不通的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top