我设置了一个数据库,其中包含一个自动递增列,该列是一个ID。问题是我忘了在phpMyAdmin中创建表时检查自动增量...并且直到现在才注意到!所以我拥有的是:
ID | column one | column two
------------------------------------
0 | some value | some value
0 | other value | something else
0 | example val. | something
0 | my example | something
基本上,我的“自动递增”列显示全面的零。如何修改此表以显示所有以前和以后所有行的自动增量?
答案 0 :(得分:9)
如果表格是空的,你可以这样做:
ALTER TABLE mytable MODIFY COLUMN id bigint not null primary key auto_increment
但我不确定其中的行会发生什么。最好创建一个具有正确定义的新数据,将数据复制到减去id列,删除旧(错误)表,然后将新表移动到旧名称。
-- Either:
CREATE TABLE newtable LIKE mytable;
ALTER TABLE newtable MODIFY COLUMN id bigint not null primary key auto_increment;
-- or:
CREATE TABLE newtable (
id bigint not null primary key auto_increment,
column1 type1,
column2 type2,
...
);
INSERT INTO newtable
(column1, column2, ...)
SELECT column1, column2, column3, ...
FROM mytable;
-- Make SURE that insert worked BEFORE you drop the old table
-- and lose data if it didn't.
DROP TABLE mytable;
ALTER TABLE newtable RENAME TO mytable;
我确信phpMyAdmin能够更加图形化地完成这项工作。
答案 1 :(得分:7)
首先更新您的记录(否则您将获得重复的主键):
UPDATE `tablename` SET id = 1 WHERE "column one" = 'some value';
UPDATE `tablename` SET id = 2 WHERE "column one" = 'other value';
UPDATE `tablename` SET id = 3 WHERE "column one" = 'example val.';
UPDATE `tablename` SET id = 4 WHERE "column one" = 'my example';
然后添加主键/ auto_increment:
ALTER TABLE tablename MODIFY COLUMN id int(11) NOT NULL primary key auto_increment;
然后设置下一个auto_increment:
ALTER TABLE tablename AUTO_INCREMENT = 5;
答案 2 :(得分:4)
您可以删除ID列并重新创建它。如果您记得启用自动增量,则会重新分配ID;)