如何重置字段的AUTO_INCREMENT?

我希望它再次从1开始计数。


当前回答

尝试运行此查询:

 ALTER TABLE tablename AUTO_INCREMENT = value;

或尝试此查询以重置自动增量

 ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL;

并设置自动增量,然后运行以下查询:

  ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;

其他回答

您可以通过以下方式重置计数器:

ALTER TABLE tablename AUTO_INCREMENT = 1

对于InnoDB,不能将auto_increment值设置为低于或等于当前最高索引。(引自ViralPatel):

请注意,不能将计数器重置为小于或等于的值任何已经使用过的。对于MyISAM,如果值小于大于或等于AUTO_INCREMENT中当前的最大值列,该值将重置为当前最大值加1。对于InnoDB,如果该值小于列,不会发生错误,并且当前序列值不会更改。

请参阅如何使用另一个表中的MAX值重置MySQL AutoIncrement?关于如何动态地获得可接受的值。

当心TRUNCATE TABLE your_TABLE将删除your_TABLE中的所有内容。

您还可以使用语法TRUNCATE表,如下所示:

TRUNCATE TABLE table_name

要更新到最新的加号id,请执行以下操作:

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);

编辑:

SET @latestId = SELECT MAX(id) FROM table_name;
SET @nextId = @latestId + 1;
ALTER TABLE table_name AUTO_INCREMENT = @nextId;

未测试,请在运行前测试*

SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;
ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

我在一些脚本中使用了这个。id字段将被删除,然后添加回以前的设置。数据库表中的所有现有字段都用新的自动递增值填充。这也适用于InnoDB。

请注意,表中的所有字段都将被重新计数,并且将具有其他ID!!!。