2013-04-26 2 views
0

I는 표 구조 I는 그 테이블이 자동 증가 일차 키 ID를 갖도록 레일 마이그레이션을 쓸 필요레일 이동 키를 제거하고 자동 증가 열 ID에 데이터를 추가

CREATE TABLE IF NOT EXISTS `artist_has_fans` (
`artist_id` int(11) NOT NULL, 
`fan_id` int(11) NOT NULL, 
PRIMARY KEY (`artist_id`,`fan_id`), 
KEY `fk_artist_has_artist_artist2` (`fan_id`), 
KEY `fk_artist_has_artist_artist1` (`artist_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

와 PHP 애플리케이션을 갖는다. 둘째 테이블에 이미 일부 데이터가 있으므로 ID 열에 데이터를 삽입해야합니다. 그런 다음 기존 열에서 기본 키를 제거해야합니다.

마이 그 레이션 작성에 대한 도움을 주시면 감사하겠습니다.

답변

2

위를 살펴보면 조인 테이블처럼 보입니다. 다른 속성을 추가 할 계획입니까, 아니면 Rails에서 작동하게하려고합니까? 레일에 has_and_belongs_to_many 관계를 사용하면 ID 필드가 필요하지 않습니다.

다음과 같은 내용이 있습니다. 이어야합니다. 표를 수정하지 않아도됩니다.

class Artist < ActiveRecord::Base 
    ... 
    has_and_belongs_to_many :fans, :join_table => 'artist_has_fans' 

end 

하지만 당신은 MySQL의에서 기본 키를 추가 할 테이블을 변경하려는 경우

ID를 생성하고 기존의 모든 행

을 값을 추가해야합니다
def_up 
     execute <<-SQL 
     ALTER TABLE artist_has_fans ADD id INT PRIMARY KEY AUTO_INCREMENT; 
     SQL 
    end