我和贾斯汀有同样的问题, (Can't change MySQL AUTO_INCREMENT) 即尝试更改auto_increment值将被忽略。
我使用过:
ALTER TABLE tableName AUTO_INCREMENT = 123;
之前,它工作正常。我也在使用InnoDB,并且在设置为Auto_increment的列上有一个主键。
CREATE TABLE `people` (
`PerRef` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`Surname` varchar(40) NOT NULL,
PRIMARY KEY (`PerRef`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我在测试期间向表中添加了一些虚拟条目。我删除了这些条目,并希望将auto_inc值重置为应该的位置。
当然,您无需在重置Auto_inc值之前移除密钥吗?
我们在这里缺少什么?
答案 0 :(得分:1)
MySQL不允许您减少AUTO_INCREMENT值,如下所示:http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
您无法将计数器重置为小于或等于的值 当前正在使用的值。对于InnoDB和MyISAM,如果是 value小于或等于当前最大值 AUTO_INCREMENT列,该值被重置为当前最大值 AUTO_INCREMENT列值加一。
MySQL使用TRUNCATE TABLE语句重置自动增量值:
TRUNCATE TABLE语句删除表的所有数据并将自动增量值重置为零。以下说明了TRUNCATE TABLE语句的语法:
TRUNCATE TABLE table_name;
通过使用TRUNCATE TABLE语句,您只能将自动增量值重置为零。此外,表中的所有数据都将被清除,因此您应该特别小心使用TRUNCATE TABLE语句。
MySQL使用DROP TABLE和CREATE TABLE语句重置自动增量值:
您可以使用一对语句DROP TABLE和CREATE TABLE来重置自动增量列。与TRUNCATE TABLE语句一样,这些语句删除所有数据并将自动增量值重置为零。
DROP TABLE table_name;
CREATE TABLE table_name(...);