설명서를 읽은 후 이미 상당히 많은 테이블이 있고 실행중인 기존 프로젝트에서 데이터베이스 마이그레이션 플러그인을 사용할 수있었습니다. 생산. 로컬로 다음 프로세스를 진행했습니다.데이터베이스 마이그레이션 플러그인을 사용하여 로컬 개발 환경을 설정 한 후 테스트 서버를 업데이트하는 방법
Pulled down latest production database
Source production database to local dev
grails dbm-generate-changelog changelog.groovy
grails dbm-changelog-sync
grails dbm-gorm-diff 2012-06-25-latest.groovy --add
grails dbm-update
향후 변경 세트를 적용 할 수있는 이유는 각자 로컬로 처리해야하는 이유입니다. 그러나 이제 2012-06-25-latest.groovy를 테스트 서버 중 하나에서 실행하고 싶습니다. 이미 프로덕션 데이터베이스를 기반으로하는 최신 데이터베이스가 있습니다.
dbm-update를 실행하려했지만 동기화가되지 않은 상태에서 이미 존재하는 테이블을 만드는 데 실패했습니다. 따라서 dbm-changelog-sync를 실행했지만 dbm-update를 실행하면 실제로 최신 파일이 적용되지 않았습니다.
변경 세트에 컨텍스트 (태그)를 추가하고 dbm-update를 실행할 때 해당 컨텍스트를 지정할 수 있다는 것을 알고 있습니다 만 이것이이 작업에 대한 유일한 방법인지 또는 워크 플로우가 필요한지 알고 싶습니다. 개조 된; 변경 로그를 테스트 서버에 적용하는 가장 좋은 방법은 무엇입니까?
테스트 env에서 changlog-sync를 수행 한 후 dbm-update를 실행하려고하면 어떻게됩니까? 또한 나는 당신이 'grails test dbm-update'처럼하고 있다고 가정합니다 - 명령에서 환경 지정하기 –
"내 질문에 다음과 같이 말했습니다."그래서 dbm-changelog-sync를 실행했지만 dbm-update를 실행했을 때, 실제로는 최신 파일을 적용합니다. " 그리고 예, 환경을 지정하고 있습니다. – Gregg
dbm-changelog-sync를 실행하면 현재의 모든 변경 집합이 적용된 것으로 등록되므로, chabgelog.groovy 기반의 기존 변경 집합 중 execyte가 필요하다면 do dbm-update가 적용될 때 적용되지 않습니다. 그러나 새 changesets를 추가 한 다음 dbm-update를 수행하면 정상적으로 실행됩니다. 그리고 이것은 테스트 환경입니다 - 왜 당신은 changelog 동기화에 대해 걱정합니까, 당신은 dbm-drop-all을하고 dbm-update를 할 수 있습니다. 그리고 나서 모든 것은 괜찮을 것입니다. –