代码之家  ›  专栏  ›  技术社区  ›  John

mysql 5.1.42 alter table auto_increment=0不起作用,truncate起作用

  •  1
  • John  · 技术社区  · 15 年前

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

    我现在正在安装一台新的PC(Windows7 64位,MySQL5.1.42),这个命令似乎没有效果。 我可以在information_schema.tables表中看到,auto_increment值没有更改回0---它只是一直在上升。如果我试图直接更改该表中的值,我会被告知对“root”@“localhost”的访问被拒绝。这是否暗示了我的问题?

    其他stackoverflow的人曾建议“从tablename中截断”是一个不错的选择。我很高兴地报告说这是可行的。但是有人知道为什么“alter table”命令不能重置自动增量吗?

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  4
  •   Pascal MARTIN    15 年前

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

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

    ALTER TABLE t2 AUTO_INCREMENT = value;
    

    不能将计数器重置为小于或等于 已经用过了 .
    为了 myisam,如果值小于或 等于当前最大值 在 自动增量 列 值重置为当前最大值 加一。
    对于InnoDB,如果 小于当前最大值 在列中,没有发生错误,并且 当前序列值未更改。

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