重置ID自增?phpmyadmin

88

我在测试数据库中的一些数据,以查看是否存在任何错误,现在我清除了所有测试数据,但我的 ID(自动递增)不再从 1 开始,我该如何重置它?

5个回答

160
ALTER TABLE `table_name` AUTO_INCREMENT=1

12
实际上,对我来说ALTER TABLE tablename AUTO_INCREMENT = 0效果最好,否则新记录将会以id=2的方式添加。 - Neil Robertson
Mickey的回答帮助了我最多。https://dev59.com/jHA75IYBdhLWcg3w899J#16114913 - Jonathan Safa

90

你也可以在phpMyAdmin中完成此操作,而无需编写SQL语句。

  • 点击左侧列中的数据库名称。
  • 点击左侧列中的表格名称。
  • 点击顶部的“操作”选项卡。
  • 在“表选项”下,应该有一个自动增量字段的AUTO_INCREMENT字段(仅适用于具有自动增量字段的表)。
  • 输入所需值并单击下面的“Go”按钮。

注意:您会发现phpMyAdmin正在执行其他答案中提到的相同的SQL语句。


17

将表格xxx的自增计数器重置为1,或通过TRUNCATE清空表格。

注:此操作会删除表格内所有数据,请谨慎操作。


13

我同意rpd的观点,这就是答案,可以定期清理您的id列,即使只有几百行数据,但可能会有一个34444543的id!因为数据被定期删除,但id会自动增加。

ALTER TABLE users DROP id

以上的 SQL 代码可以通过 SQL 查询或 PHP 运行。这将删除 id 列。

然后通过下面的代码重新添加它:

ALTER TABLE  `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST

将此代码放置于可能在管理面板中运行的代码片段中,这样当任何人进入该页面时,它将运行此自动清理数据库并整理其内容的脚本。


1
+1个好的解决方案,因为在我的情况下,如果表格仍然包含一些数据(前2个用户),自动增量将不会被改变。但是使用您的解决方案,它将重新排列所有索引。 - Mohammed Joraid
4
“这是答案,可以定期执行以清理您的id列,因为数据只有几百行。” 我觉得我不是唯一一个看到这个问题的人吧?发帖者问的是(我认为)关于空表格的问题!您提到“定期执行”是指在充满数据的表格上进行。您如何想象这一点呢?其他表格(使用此表格中ID的其他表格)的相关性怎么办?如果您只删除id并重新创建它,则完全更改了记录的ID。您也可以停止使用id列! - trejder
每个情况都是不同的......我只有8000行数据,我的ID号码有9或10位数......没有关联,只是选择了最新的结果(最高的ID)。这是一个定期任务,每月执行一次,在18个月内从未出现过问题... - Mikeys4u
这对我的情况非常完美!谢谢!!! - Jonathan Safa
1
如果数据库中的数据不断变化且ID仅与单个会话相关,则只有在定期基础上执行此选项才是好的选择。或者,如果数据始终以后进先出的方式使用。但是,就像Trejder所说,如果ID用于将此处的数据链接或关联到其他表或代码,则执行您所说的操作将破坏一切。因此,我可以看到在某些情况下这可能是可以的,但是您必须小心,因为如果您过度使用此功能,可能会导致程序以奇怪的意外方式崩溃,这很可能不会留下有意义的错误来帮助您解决问题。 - Kit Ramos

-1

我刚在我的一个MySQL数据库中遇到了这个问题,然后我看了phpMyAdmin的答案。然而,在phpMyAdmin中我最好的解决方法是在受影响的表中删除id列并创建一个新的id列(添加A-I -autoincrement-)。这样可以正确恢复我的表格id-简单易行!希望这能帮助其他遇到这个问题的人(不需要MySQL代码-我希望以后学会使用它!)。


phpMyAdmin使用的SQL基本上就是Mikeys4u在上面给出的答案。你可以看到我在那里的评论,为什么这在某些情况下可能是可以的,但并不是万能解决方案。 - Kit Ramos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接