Mysql 如何在InnoDB表中从自动递增重置ID

Mysql 如何在InnoDB表中从自动递增重置ID,mysql,database,Mysql,Database,我的InnoDB表如下所示: ID | DATA ---------- 1 | A 2 | B 5 | C 8 | D 13 | E ID | DATA ---------- 1 | A 2 | B 3 | C 4 | D 5 | E 我想将列ID重置为如下所示: ID | DATA ---------- 1 | A 2 | B 5 | C 8 | D 13 | E ID | DATA ---------

我的InnoDB表如下所示:

ID | DATA
----------
1  |   A
2  |   B
5  |   C
8  |   D
13 |   E
ID | DATA
----------
1  |   A
2  |   B
3  |   C
4  |   D
5  |   E
我想将列ID重置为如下所示:

ID | DATA
----------
1  |   A
2  |   B
5  |   C
8  |   D
13 |   E
ID | DATA
----------
1  |   A
2  |   B
3  |   C
4  |   D
5  |   E
但不幸的是,这不起作用:

ALTER TABLE tableName AUTO_INCREMENT=1

有什么解决办法吗


感谢

表的自动增量值决定MySQL将为下一条新记录提供什么值-它不会对现有数据产生影响

如果您想更改数据,您必须在自定义程序中自己进行更改。类似于(伪代码):

然而如果您在任何其他表中使用该ID,您也必须更新其中的值。这可能会变得非常复杂-您应该尽量避免更改主键值


最后,无符号BIGINT的最大值是18446744073709551615-您真的打算在不久的将来达到该值吗?

您可以执行这些步骤

ALTER TABLE `table` DROP `id`;
ALTER TABLE `table` AUTO_INCREMENT = 1;
ALTER TABLE `table` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
1-将删除id列

2-从1开始设置自动增量

3-首先使用递增的值创建列id

然后它会再次订购您的所有ID


也将帮助您

您为什么需要这个?因为我有非常大的差距,如12345,下一个数字是123456,在不久的将来,我将接近bigint value。欢迎!很高兴它帮助了你:),确保接受答案来帮助他人。