2013-07-21 15 views
5

Sunucumuzun birden çok (6 veya daha fazla) örneğinde bir Flyway geçişi yapmaya çalışıyorum. Her biri Bambu kullanarak Git'ten otomatik olarak oluşturulmakta ve dağıtılmaktadır, bu yüzden flyway:migrate Maven hedefini kullanabilmeyi gerçekten çok isterim, böylece her sunucu bir sonraki konuşulduğunda kendini göste- rir.Flyway Maven init geçirmeden önce

Ancak şimdi yalnızca Flyway'i deniyorum, bu nedenle mevcut DB'lerin hiçbiri init 'd. Merak ettiğim gibi, Maven'de, zaten hiç değilse init ve her seferinde migrate olmalıdır?

migrate docs

"o yoksa Flyway otomatik meta veri tablosunu yaratacak" önerisini ancak flyway:migrate gol yürütüldüğünde aslında, ben hata alıyorum: yapmadım

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]

cevap

12

Maile ile anladım, çünkü API version'u Spring ile kullanmaya başladım (ki bu her açıdan daha iyi görünüyor). Başlangıçta aynı sorun vardı: init-method="migrate" boş olmayan şemalarda başarısız olurdu ve init ilk olarak çağrılması gerekiyordu. Ancak, Flyway fasulyesinin kaynağına bakarak, initOnMigrate'u doğru olarak ayarlayabildiğimi fark ettim ve bunu benim için yapardı. Bunun neden belgelerinde olmadığından emin değilim; Fasulye ile çok fazla oynamayan birine çok açık değildir. Ayrıca Flyway şikayetçi olduğu hakkında bir boş olmayan bir şema varsa

Neyse, applicationContext.xml yılında fasulye gibi görünmelidir:

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

Bunu işaretlediğiniz için teşekkür ederiz. Artık bu özel durum mesajını "init() kullan" veya "meta veri tablosunu başlatmak için initOnMigrate değerini true olarak ayarladım." –

0

Eğer yay çizme kullanıyorsanız, sizin pervane bu koymak/yml

flyway.initOnMigrate=true 

or 
flyway: 
    initOnMigrate: true 

unutmayın dosyası: Bu garanti güvenlik ağı kaldırır olarak bu etkinleştirirken dikkatli Be - Flyway yanlış dekar taşımaz Bir yapılandırma hatası durumunda tabase!

+0

"dikkatli" uyarısına bağlantı https://flywaydb.org/documentation/maven/migrate en son sürümde düşünüyorum bu özellik "baselineOnMigrate" –