如何重置MySQL中的AUTO_INCREMENT?

我怎样才能重置字段的auto_increment ? 我希望它从1开始重新计数。

你可以用下面的方法重置计数器

 ALTER TABLE tablename AUTO_INCREMENT = 1 

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

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

请参阅如何使用另一个表中的MAX值重置MySQL自动增量? 如何dynamic获得可接受的价值。

 ALTER TABLE tablename AUTO_INCREMENT = 1 

就像这样:

 ALTER TABLE tablename AUTO_INCREMENT = value; 

参考: http : //dev.mysql.com/doc/refman/5.1/en/alter-table.html

 SET @num := 0; UPDATE your_table SET id = @num := (@num+1); ALTER TABLE your_table AUTO_INCREMENT =1; 

我认为这将做到这一点

在这里输入图像描述 在“操作”选项卡下有一个非常简单的方法,你可以在表格选项中设置自动增量到你想要的数字。

最适合我的解决scheme:

 ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED; COMMIT; ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT; COMMIT; 

它的速度很快,和innoDB一起工作,我不需要知道当前的最大值! 这样自动增量计数器就会复位,并自动从最大值开始计数。

如何重置MySQL自动增量列有很好的select

请注意, ALTER TABLE tablename AUTO_INCREMENT = value; 对InnoDB不起作用

这个问题的评分最高的答案都推荐“ALTER yourtable AUTO_INCREMENT = value”。 但是,这只有在alter中的值大于autoincrement列的当前最大值时才有效。 根据MySQL文档 :

您不能将计数器重置为小于或等于任何已经使用的值。 对于MyISAM,如果该值小于或等于当前AUTO_INCREMENT列中的最大值,则将该值重置为当前最大值加1。 对于InnoDB,可以使用ALTER TABLE … AUTO_INCREMENT =从MySQL 5.0.3起的值,但是如果该值小于列中当前的最大值,则不会发生错误,并且当前序列值不会更改。

实质上,只能修改AUTO_INCREMENT来增加自动增量列的值,而不会将其重置为1,因为OP会在问题的第二部分中提出要求。 对于实际允许您将AUTO_INCREMENT从当前最大值向下设置的选项,请查看重新sorting/重置自动递增主键 。

添加更新,因为MySQL 5.6中的function已更改。 从MySQL 5.6开始,你可以使用简单的ALTER TABLE和InnoDB:

 ALTER TABLE tablename AUTO_INCREMENT = 1; 

文档已更新,以反映这一点:

http://dev.mysql.com/doc/refman/5.6/en/alter-table.html

我的testing也显示表格不被复制,值只是简单的改变。

 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一起工作。

请注意,表格中的所有字段将被重新logging,并且将具有其他ID!

你也可以像这样使用TRUNCATE表的语法: TRUNCATE TABLE table_name

谨防!! TRUNCATE TABLE your_table删除 TRUNCATE TABLE your_table 所有内容

它是为空表:

 ALTER TABLE `table_name` AUTO_INCREMENT = 1; 

如果你有数据,但你想清理它,我build议使用这个:

 ALTER TABLE `table_name` DROP `auto_colmn`; ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`); 

您可以简单地截断表来重置序列

 TRUNCATE TABLE TABLE_NAME 

一个表的自动增量计数器可以(重新)设置两种方式:

  1. 通过执行一个查询,像其他人已经解释:

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  2. 使用工作台或其他可视化数据库devise工具。 我将在Workbench中展示它是如何完成的 – 但是在其他工具中也不会有太大的不同。 右键单击所需的表格,然后从上下文菜单中selectAlter table 。 在底部,您可以看到所有可用的选项来更改表格。 selectOptions ,你会得到这个表格: 在这里输入图像描述

    然后只需在图像中显示的Auto increment字段中设置所需的值。 这将基本上执行第一个选项中显示的查询。

我试图改变表,并将auto_increment设置为1,但它没有工作。 我决定删除正在递增的列名,然后用您的首选名称创build一个新列,并将新列设置为从一开始就增加。

要更新最新加一个ID

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

请使用下面的代码:

 ALTER TABLE tablename AUTO_INCREMENT = 1 

我build议你去查询浏览器,并执行以下操作:

  1. 去模式和find你想改变的表。
  2. 右键单击并select复制创build语句。
  3. 打开结果选项卡并粘贴create语句。
  4. 转到create语句的最后一行,查找Auto_Increment = N,(其中N是auto_increment字段的当前数字。)
  5. 将Nreplace为1。
  6. 按下ctrl + enter

一旦你在表格中input新行,Auto_increment应该重置为1。

我不知道如果你尝试添加一个auto_increment字段值已经存在的行会发生什么。

希望这个帮助!

最好的方法是删除与AI的领域,并再次与AI添加,适用于所有表

下面的代码适合我

 Alter TABLE employee AUTO_INCREMENT = 5; 

版本 – 5.7.13

引擎 – innodb