2013-03-26 1 views
3

사람들,레일 이동 파일의 입력 오류

모델의 속성 값을 업데이트하는 레일 마이그레이션 파일을 만든 상황이 있습니다. 몇 가지 프로덕션 배포에서이 마이그레이션을 실행 한 다음 오타 (typo)로 인해 테이블이 업데이트되지 않음을 알았습니다. 이 문제를 해결하는 가장 좋은 방법은 현재 마이그레이션 파일을 수정 프로그램으로 업데이트하고 커밋 한 다음 마이그레이션을 다시 실행하거나 새 마이그레이션 파일을 만들어이 마이그레이션을 제거해야합니다.

+2

마이그레이션이 실행되지 않은 경우 직접 진행하고 직접 편집 할 수 있습니다. –

+0

마이그레이션이 실행되었는지 여부는 어떻게 결정됩니까? 예를 들어 레일즈가이를 결정하는 방법 (예 :이 경우 마이그레이션을 확실히 실행하려고 시도했지만 오타가 있었기 때문에 아무 것도하지 않음) – user1781472

+0

마이그레이션 스 니펫을 제공 할 수 있습니까? 오타에 따라 예외가 발생 했습니까? 아니면 잘못된 이름으로 특성을 만들었습니까? –

답변

2

마이그레이션을 실행하고 성공한 후 현재 마이그레이션 파일을 업데이트하고 마이그레이션을 다시 실행하려고하면 마이그레이션 버전이 현재 db 버전과 같기 때문에 Rails는 스키마를 업데이트하지 않습니다.

rake db:migrate:status을 수행하는 경우 마이그레이션 목록과 적용 여부를 볼 수 있어야합니다.

따라서 마이그레이션에 status: down이 있으면 데이터베이스에 아직 적용되지 않았 음을 의미합니다.

이미 db에 적용된 경우 많은 옵션을 사용할 수 있습니다.

  1. rake db:rollback 갱신 파일은
  2. 가 오타를 수정 새 파일을 만들기 마이그레이션 실행을 다시. 잘못된 데이터로 마이그레이션을 제거해도 테이블에 대한 작업 및 새 마이그레이션에서의 수정 방법에 따라 데이터베이스가 수정되지는 않습니다.