如何重置字段的AUTO_INCREMENT?

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


当前回答

最好的方法是用AI删除字段,然后用AI再次添加。它适用于所有表。

其他回答

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!!!。

要更新到最新的加号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;

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

您需要遵循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);

最好的方法是用AI删除字段,然后用AI再次添加。它适用于所有表。

就像这样:

ALTER TABLE tablename AUTO_INCREMENT = value;

参考:13.1.9 ALTER TABLE语句