2011-10-30 4 views
6

ID가 될 자동 증가 열이있는 데이터베이스를 설정했습니다. 문제는 phpMyAdmin ...에서 테이블을 만들 때 자동 증가를 체크하는 것을 잊어 버렸습니다. 지금까지 알지 못했습니다! 그래서 제가 가진 것은 다음과 같습니다 :MySQL : 자동 증가를 설정하지 않았습니다.

ID | column one | column two 
------------------------------------ 
0 | some value | some value 
0 | other value | something else 
0 | example val. | something 
0 | my example | something 

기본적으로, "자동 증가"열은 보드 전체에 0을 표시합니다. 이전 및 이후의 모든 행에 대해 자동 증가를 표시하려면 어떻게이 테이블을 수정할 수 있습니까? 테이블이 비어 있다면

+1

테이블 스키마가 있습니까? –

답변

8

당신은 다만 수 :

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이 이것을보다 그래픽 적으로 처리 할 수있는 능력이 있음을 확신합니다.

+0

예, 가능합니다. 단지'PRIMARY KEY'와'auto_increment'가되도록 열을 수정하십시오. –

+1

많은 레코드가 있다면 +1 좋은 해결책 –

6

먼저 귀하의 기록을 (그렇지 않으면 당신은 기본 키를 중복 얻을 것이다) 업데이트 :

ALTER TABLE tablename AUTO_INCREMENT = 5; 
:
ALTER TABLE tablename MODIFY COLUMN id int(11) NOT NULL primary key auto_increment; 

그런 다음 다음 AUTO_INCREMENT을 설정

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를 추가

+0

몇 줄이 넘으면 모든 레코드를 업데이트하는 데 시간이 많이 걸리고 노동 집약적입니다. – Kevin

+0

나는 동의한다, 그러나보기에서는 4 개의 레코드가있다. 사용자가 많은 레코드를 가지고 있다면 나는 당신의 투표를했습니다. –

4

ID 열을 삭제하고 다시 작성할 수 있습니다. 자동 증가 기능을 사용하도록 설정 한 경우 ID가 다시 할당됩니다.)

관련 문제