Mysql 如何在InnoDB表中从自动递增重置ID
我的InnoDB表如下所示: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 ---------
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。欢迎!很高兴它帮助了你:),确保接受答案来帮助他人。