MySQL AUTO_INCREMENT无法更新

时间:2014-11-10 04:06:08

标签: mysql

我和贾斯汀有同样的问题, (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值之前移除密钥吗?

我们在这里缺少什么?

1 个答案:

答案 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(...);