Mysql的42年5月1日ALTER TABLE AUTO_INCREMENT = 0不起作用,不截断
-
19-09-2019 - |
题
有关我的自动化验收测试,我想插入开始与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,但它已经高于该值 - 并且你不能将其重置为使用小于一个已经被使用的任意值的值,这是行不通的。
不隶属于 StackOverflow