mysql - 重新同步MySQL自增字段

标签 mysql auto-increment myisam

我有一个带有自动增量列的表,昨晚我犯了一个错误,不小心插入了一些坏行,所以我删除了它们。

不幸的是,这意味着我在自动增量字段中“丢失”了一些 id(我插入了两行好行和三行坏行,id 315 和 316 很好,但我删除了 id 317、318 的行,和 319。当计数重新启动时,它的 id 为 320,因此它跳过了我删除的三行)。
我知道这是 AI 字段所需的功能,但是有没有办法可以重置它,这样这些 id 就不会被跳过?我读到了有关删除 id 字段并重新创建它的信息(我知道这会破坏与其他表的任何关系,我可以手动修复该问题)。

是否可以保证分配给行的新 id 与以前相同。例如,执行此操作后,第 1, 2, 3, 4, ... 行仍然是第 1, 2, 3, 4, ... 行吗?
还有其他方法吗?

最佳答案

根据the documentation ,您应该能够使用:

ALTER TABLE your_table AUTO_INCREMENT = <your desired value>;

但这仅在您没有高于该值的 ID 时才有效。就您的情况而言,由于您声明您已经在 320(也可能在上面)生成了 ID,因此您必须删除这些 ID,然后重新插入它们。

关于mysql - 重新同步MySQL自增字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453733/

相关文章:

mysql - Dockerfile - 在入口点部署 mysql 转储

Php 每 X 天/小时/分钟/秒执行一次页面

php - Codeigniter 数组插入数据库

mysql - 如何修复mysql中的 "warning : Found row where the auto_increment column has the value 0"?

mysql - 表中的指针大小是多少?

mysql - `KILL QUERY`命令的目的是什么?

mysql - MariaDB - INNODB 在创建增量记录时跳过数字序列 - 为什么?

php - 基于现有行的受控表查询

mongodb - 使用 loopback.js 和 MongoDB 自动递增

java - Java 中具有某些约束的唯一 ID