문제

Rake DB : 마이그레이션은 새로운 마이그레이션 만 추가합니까, 아니면 모든 마이그레이션/변경을 중단하고 새로운 모든 것을 건설합니까?

레이크는 마이그레이션 042에서 삭제 된 마이그레이션 040에서 테이블 속성에 액세스하려고하기 때문에 오류를 던지고 있다고 생각합니다. 어쨌든 내 DB와 레이크는 동기화되지 않고 고치려고합니다.

전문가들에게 - 레이크가 마이그레이션과 동기화하는 것이 일반적입니까? 어떻게 피할 수 있습니까 (아니요, 스키마 나 레이크 파일을 직접 편집하지 않습니다).

도움이 되었습니까?

해결책

스크립트/생성 모델과 같은 스크립트를 사용하여 마이그레이션을 만들 때마다 실제 데이터베이스와 동기화 할 준비가 된 올바른 디렉토리에 새 마이그레이션이 추가됩니다.

실제로 Rake DB : Migrate Migrate Migne Migration이 이전의 마이그레이션을 신경 쓰지 않고도 데이터베이스에 적용 해야하는 확인 만 확인합니다.

물론 다른 방법을 사용하여 데이터베이스를 수정하는 경우 속도가없는 물건을 얻는 것이 일반적입니다.

다른 팁

레일 마이그레이션을 사용하면 테이블이 호출됩니다 schema_migrations 각 마이그레이션의 버전 번호를 저장하여 적용 된 마이그레이션을 추적하는 자동으로 작성됩니다 (파일 이름에서 마이그레이션 이름을 서명하는 번호, 즉 DB/Migrate/_20090617111204__migration.rb). 당신이 달릴 때 rake db:migrate 마이그레이션을 위해서는 이전에 실행되지 않은 마이그레이션 만 (즉, 버전이 테이블에 포함되어 있지 않음) 만 실행됩니다 (이러한 이유로 이미 실행 된 마이그레이션을 변경하면 실행 중에는 영향을 미치지 않습니다. db:migrate). 마이그레이션 할 때 모든 버전이 발견됩니다 schema_migrations 당신이 롤백하는 버전보다 더 큰 것은 취소 될 것입니다.

마이그레이션은 현재 버전에서 최신 버전으로 이동한다는 것을 의미합니다 (첫 번째 답변에서와 같이). 레이크 DB 사용 : 마이그레이션을 사용하면 스키마에 새로운 변경 사항을 적용 할 수 있습니다. 그러나 이전 마이그레이션으로 롤백하려면 Rake DB : Rollback을 사용하여 새 변경 사항이 잘못 정의 된 경우 새로운 변경 사항을 무효화 할 수 있습니다. 주의 : 그렇게함으로써 데이터가 손실됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top