如何重置字段的AUTO_INCREMENT?

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


当前回答

如果您使用PHPStorm的数据库工具,则必须在数据库控制台中输入:

ALTER TABLE <table_name> AUTO_INCREMENT = 0;

其他回答

它适用于空表:

ALTER TABLE `table_name` AUTO_INCREMENT = 1;

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

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`);

您需要遵循Miles M评论中的建议,这里有一些PHP代码可以修复MySQL中的范围。此外,您还需要打开my.ini文件(MySQL),并将max_execution_time=60更改为max_exece_time=6000;对于大型数据库。

不要使用“ALTER TABLE tablename AUTO_INCREMENT=1”。它将删除数据库中的所有内容。

$con = mysqli_connect($dbhost, $dbuser, $dbpass, $database);
$res = mysqli_query($con, "select * FROM data WHERE id LIKE id ORDER BY id ASC");

$count = 0;
while ($row = mysqli_fetch_array($res)){
    $count++;

    mysqli_query($con, "UPDATE data SET id='".$count."' WHERE id='".$row['id']."'");
}
echo 'Done reseting id';
mysqli_close($con);

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

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

TRUNCATE TABLE table_name
SET  @num := 0;

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

ALTER TABLE your_table AUTO_INCREMENT =1;

从MySQL 5.6开始,您可以在InnoDB中使用简单的ALTERTABLE:

ALTER TABLE tablename AUTO_INCREMENT = 1;

更新文件以反映这一点:

13.1.7 ALTER TABLE语句

我的测试还显示该表未被复制。只需更改值即可。