2012-11-30 3 views
0

스키마의 테이블에 일부 열을 추가해야합니다. 누군가 이걸하는 가장 좋은 방법을 말해 줄 수 있습니까?레일에서 스키마 변경 2

schema.rb 파일이 새 열을 포함하도록 업데이트되지 않았고 해당하는 모든보기 파일 (편집, 색인, 새보기)이 새 열을 포함하도록 업데이트되지 않았기 때문에 다음은 불완전하거나 잘못되었습니다. 생성 된 모든 마이그레이션 클래스의 팽창은 말할 것도 없습니다. 나는 다음이 추가

class RecordLabelToAlbums < ActiveRecord::Migration 
def self.up 
end 

def self.down 
end 
end 

: 감사

ruby script/generate migration RecordLabelToAlbums record_label:string 
     exists db/migrate 
     create db/migrate/20121130125859_record_label_to_albums.rb 

이 작성

class RecordLabelToAlbums < ActiveRecord::Migration 
def self.up 
    add_column :albums, :record_label, :text 
end 

def self.down 
    remove_column :albums, :record_label 
end 

end 

을 내가 달릴 :

rake db:migrate 

있어이 : MySQL의 :: 오류 : '앨범'테이블이 이미 있습니다. : 추가 한 코드가 올바른지

+0

마이그레이션을 표시 하시겠습니까? – Lichtamberg

+0

'rake db : migrate'로 마이그레이션을 실행 했습니까? 응용 프로그램 코드를 직접 수정해야합니다. – Chowlett

+0

예, 개발을 시작할 때 rake db : migrate를 실행했습니다. 이제 테이블에 몇 개의 열을 추가해야하며이 작업을 수행하는 가장 좋은 방법에 대해 궁금합니다. – Slinky

답변

1

albums (id INT (11) DEFAULT의 NULL AUTO_INCREMENT 기본 키, created_at 날짜, updated_at 날짜)를 만듭니다.

오류로 인해 시스템이 앨범 테이블을 만든 원래 마이그레이션을 아직 실행하지 않은 것으로 판단되는 것으로 나타납니다. 마이그레이션 상태 (레일 2)는 schema_migrations이라는 데이터베이스의 테이블에 지정되어 있습니다. 혼란 스러울 경우 마이그레이션을 다시 실행하려고 시도합니다. 혼란을 야기 할 수있는 것이 무엇인지 확신 할 수는 없지만 레일스 2.x를 사용했을 때 2008 년에 몇 차례 이런 일이있었습니다.

테이블은 간단합니다. SQL 프롬프트에서 그 테이블의 내용을 볼 수 있습니다. 실행 한 것으로 생각되는 마이그레이션의 이름 일뿐입니다.

일부 데이터가 손실되지 않도록 신경 쓸 필요가 없다면 rake db:rollback 또는 rake db:reset으로 다시 시도해보십시오. rake db:rollback STEP=2은 최근 2 번의 마이그레이션을 롤백합니다.

데이터가 필요한 경우 누락되었을 수있는 app/db/migrations의 마이그레이션을 참조하는 하나 이상의 새로운 레코드를 추가하여 테이블의 내용을 수정하십시오. 순서가 중요하다고 생각합니다. (형식은 레일 3에서 조금 바뀌었고, 어떻게 기억하지는 않습니다.)

언제든지 데이터베이스 스키마를 추가하거나 변경하려면 레일스를 사용하여 마이그레이션을 생성 한 다음 이동 준비가 완료되면 rake db:migrate을 실행하십시오.

그리고 묻는 것 : 당신이 레일즈 3로 이동할 수있는 방법이 있습니까? 몇 년 전부터 있었고 곧 레일즈 4가 출시 될 것입니다. 히트 및 업그레이 드를하지 않으면 비 호환성, 비추천, 보안 및 성능 문제 등의 폐수가 될 것입니다.

+0

감사합니다. Tom, 자세한 내용은 나는이 프로젝트를 수시로 업데이트해야한다고 상속 받았다. Rails 2에서 3 로의 마이그레이션 가이드가 있습니까? 환호 – Slinky

+0

톤이 있습니다.Google은 "레일 2에서 3으로 마이그레이션"- RailsCast가 좋으며 이동할 필요가있는 항목을 파악하는 데 도움이되는 보석이있는 것 같습니다. (약간의 호언 장담 : 당신이 설명하는 상태로 많은 응용 프로그램이 남아 있습니다. 응용 프로그램을 업데이트하기 위해 자원이 할당되지 않으면 다양한 보안 및 기타 문제가 해결되지 않은 채 남아 있습니다. 좋아, 이제 가슴에서 떨어지면 기분이 나아질거야 .-) –

관련 문제