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吗?
谢谢!
不确定为什么它可以在一台服务器上运行,而不能在另一台服务器上运行,但是MySQL手册指出 (引用,重点是我的):
要更改
AUTO_INCREMENT用于新行的计数器的值 ,请执行以下操作:Run Code Online (Sandbox Code Playgroud)ALTER TABLE t2 AUTO_INCREMENT = value;您不能将计数器重置为小于或等于已使用的值。
对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前的最大值加1。
对于InnoDB,如果该值小于该列中的当前最大值,则不会发生错误,并且当前序列值不会更改。
也许这就是问题的原因:您试图将auto_increment计数器恢复为0,但它已经高于该值-并且由于无法将其重置为小于已使用的任何值的值,因此不会工作。
| 归档时间: |
|
| 查看次数: |
8846 次 |
| 最近记录: |