2

나는 rake db:migrate를 실행했습니다 내 마이그레이션의 모든 달렸다. 내가 rake db:test:prepare를 실행하려고하면 그러나, 나는 오류 얻을 :레일 : 테스트 : 준비는

You have 1 pending migrations: 
    20130724211328 CreateGalleries 
Run `rake db:migrate` to update your database then try again. 

그런 다음 다시 rake db:migrate을 실행하는 오류 제공 :

PG::Error: ERROR: relation "galleries" already exists... 

을하지만 같이 콘솔에서 나는 정확히 갤러리 모델을 생성하고 조작 할 수 있습니다 CreateGalleries 마이그레이션에서. 다른 마이그레이션에서 테이블이 작성되지 않았거나 언급되지 않았습니다.

마이그레이션이 잘 실행하지만 등록하지 않은 것 같다. 어떤 아이디어가 이것을 고치는 방법?

편집 나는 rake db:drop db:create db:migrate 다음 rake db:test:prepare 이것을 해결,하지만 난 처음에 문제의 원인을 밝혀 수있는 사람에 대한 해결책을 제공 드리겠습니다.

답변

1

나는 갤러리의 마이그레이션이 제대로 실행되지 않았습니다 생각한다. 모든 것이 테이블에 있는지 100 % 확신하면 마이그레이션 버전을 갤러리 이전 버전으로 끌어 올릴 수 있습니다.

갤러리를 이전 할 때의 타임 스탬프 (이 경우 20130724211328)를 찾고이 번호를 테이블 schema_migrations에 새 행으로 삽입하십시오 (이후 레일스가 자동으로 수행합니다). 마이그레이션을 성공적으로 실행). 테이블이 비어있는 경우

, 당신은 또한 테이블 galleries을 삭제하고 다시 rake db:migrate를 실행할 수 있습니다. 이 방법을 사용하면 마이그레이션으로 오류가 발생하지 않도록 할 수 있습니다.

+0

무엇 부적절한 실행의 예를 것입니까? 모델은 내가 콘솔에서 원하는 방식으로 정확히 응답합니다. 실패 할 수 있지만 기능을 그대로 유지할 수있는 다른 기능적이지 않은 (예 : 추적) 작업이 있습니까? – tyler

+0

예는 테이블이 잘 만들어 졌는지 것입니다,하지만 당신은 (add_index''사용) 인덱스해야 컬럼의 이름으로 작은 오타했다. 마이그레이션은 완료되지 않았지만 테이블이 있으므로 수동으로 수정하지 않고 테이블을 다시 실행하여 완료 할 수는 없습니다. –

+0

전체가 실행되지 않으면 마이그레이션을 롤백하고 변경 사항을 취소하지 않습니까? – tyler