2013-07-21 5 views
5

우리 서버의 여러 (6 개 정도) 인스턴스에서 이동 경로 마이그레이션을 시도하고 있습니다. 각각은 Bamboo를 사용하여 Git에서 자동으로 빌드 및 배포되므로, flyway:migrate Maven 목표를 사용하여 각 서버가 다음에 배포 될 때 자체 마이그레이션 할 수 있기를 정말로 바라고 있습니다.마이그레이션 전 이동 경로 Maven init

그러나 나는 현재 Flyway를 시험 중이므로 기존 DB 중 어느 것도 init 'd가 아닙니다. Flyway가 매번 init이되어야한다면 Maven에서 어떤 식 으로든 지정할 수 있는지 궁금합니다. 매번 migrate을 입력해야합니까?

migrate docs

은 "존재하지 않는 경우 이동 경로가 자동으로 메타 데이터 테이블을 만들 것이다"고 제안하지만, flyway:migrate 목표 실행 사실, 나는 오류 얻을 : 나는하지 않았다

Failed to execute goal com.googlecode.flyway:flyway-maven-plugin:2.2:migrate (default) on project mutopia-server: Flyway Error: com.googlecode.flyway.core.api.FlywayException: Found non-empty schema "public" without metadata table! Use init() first to initialize the metadata table. -> [Help 1]

답변

12

을 Maven으로 알아 내십시오. 스프링으로 API version을 사용하기로 바꿨 기 때문에 (모든면에서 더 좋아 보이는 것 같습니다).

처음에는 동일한 문제가있었습니다. 콩의 init-method="migrate"은 비어 있지 않은 스키마에서 실패하므로 init이 먼저 호출되어야합니다. 그러나 Flyway 빈의 소스를보고, 나는 단지 initOnMigrate을 true로 설정할 수 있다는 것을 알았고, 그것은 나를 위해 그것을 할 것입니다. 왜 이것이 문서에 없는지 나는 잘 모르겠다. 콩으로 놀아 보지 않는 사람에게는 평범하지 않습니다. 당신은 또한 철새 이동 경로 불평하는 대한 비어 있지 않은 스키마가있는 경우

어쨌든, applicationContext.xml에서 빈은 다음과 같아야합니다

<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="initOnMigrate" value="true" /> 
</bean> 
+2

감사합니다. 이제 예외 메시지를 "Use init()를 사용하거나 initOnMigrate를 true로 설정하여 메타 데이터 테이블을 초기화하십시오." –

0

당신이 봄 부팅을 사용하는 경우, 귀하의 소품에 넣고/YML

flyway.initOnMigrate=true 

or 
flyway: 
    initOnMigrate: true 

유의하시기 바랍니다 파일 :이 보장 안전망을 제거으로 이것을 사용할 때 주의 수 - 이동 경로가 잘못된 다를 마이그레이션하지 않습니다 구성 실수의 경우 tabase!

+0

"주의"경고에 대한 링크 https://flywaydb.org/documentation/maven/migrate 나는 최신 버전에서이 속성을 "baselineOnMigrate"라고 생각합니다. –

관련 문제