如何重置字段的AUTO_INCREMENT?

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


当前回答

警告:如果您的列具有约束或作为外键连接到其他表,这将产生不良影响。

首先,删除列:

ALTER TABLE tbl_name DROP COLUMN column_id

接下来,重新创建列并将其设置为FIRST(如果您希望它作为我假设的第一列):

ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST

其他回答

您需要遵循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);
ALTER TABLE `table_name`   DROP `id`;

ALTER TABLE `table_name` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;

很快,首先我们删除了id列,然后再次添加了主键id。。。

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

ALTER TABLE tablename AUTO_INCREMENT = 1;

更新文件以反映这一点:

13.1.7 ALTER TABLE语句

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

我试图更改表并将auto_increment设置为1,但没有成功。我决定删除正在递增的列名称,然后用您的首选名称创建一个新列,并将该新列设置为从开始递增。

表格的自动递增计数器可以通过两种方式设置:

通过执行查询,就像其他人已经解释过的那样:ALTER TABLE<TABLE_name>AUTO_INCREMENT=<TABLE_id>;使用Workbench或其他可视化数据库设计工具。我将在Workbench中展示它是如何实现的,但在其他工具中也应该不会有太大不同。右键单击所需的表格,然后从上下文菜单中选择Alter table。在底部,您可以看到更改表格的所有可用选项。选择“选项”,您将获得此表单:

然后,只需在自动增量字段中设置所需的值,如图所示。这将基本上执行第一个选项中显示的查询。