2014-08-29 11 views
12

Found non-empty schema "public" without metadata table! Use init() or set initOnMigrate to true to initialize the metadata table. Flyway: meta tablo olmadan boş olmayan şema ben PostGIS 2.0 ile Postgres 9.2 kullanıyorum

  • . Bu, yeni bir veritabanı oluşturduğumda varsayılan olarak, spatial_ref_sys adlı public şemasında oluşturulan bir tablo olacağı anlamına gelir.

Bu veritabanında flyway migrate çalıştırdığımda, yukarıdaki hatayı alıyorum. init'un çalıştırılması, public.schema_version tablosunu oluşturuyor ve geçiş dosyasını gerçekten çalıştırmadan sürüm 1'i SUCCEDED olarak işaretliyor. Ayrıca hiçbir başarı ile initOnMigrate kombinasyonları denedim. Flyway herhangi bir şema yönetmek için yapılandırılmamış.

Bu senaryoda bir geçişi nasıl yürütebileceğime dair herhangi bir fikir var mı?

+0

Hata mesajını basitçe belirtmek için sorunun başlığını daha da değiştirdim. Asıl başlık "Göç veri tabanına geçişi hatalara neden oluyor" ifadesi, aşağıdaki yorumlarda belirtildiği gibi yanlıştı. – markdsievers

cevap

14

Başlık, veritabanınız gerçekten yüklü olduğundan, PostGIS uzantısı aracılığıyla, genel şemada bir dizi nesneye sahip olduğundan, biraz çelişkilidir. Ya

  • yeni şemaya flyway.schemas ayarlayabilirsiniz

    ardından Flyway tarafından otomatik olarak oluşturulur MY_APP derler. Uygulamanız daha sonra bunu herkese açık (önerilen)

  • flyway.baselineOnMigrate ayarını true olarak kullanmalı veya genel şemaya göre flyway.baseline() numaralı telefonu çağırmalıdır. içinde bu satırı ekleyin Bu çalışacaktır, ancak kamu ardından hem uygulama nesneleri bir karışımını içerecektir ve PostGIS pom.xml olarak
+0

Fuar noktası, uyarıyı yansıtacak başlığı ve içeriği değiştirdi. Tekrar cevaplar için teşekkürler Axel, pazartesi günü tekrar vuracak ve sonuçlarıma geri dönecek. – markdsievers

+0

Bir kenara göre, [bu Flyway/EJB entegrasyon sorusu] hakkında herhangi bir yorumunuz varsa (http://stackoverflow.com/questions/25557898/bootstrap-ejb3-application-before-jpa-hibernate-startup) yorumlarınızdan herhangi birini duymayı seviyorum. – markdsievers

+0

Yaptığım şey 'flyway.schemas' için 'flyway' eklendi, böylece schema_version 'tamamen izole edildi. Şu anda 7 şemaya sahibiz, yani [önceki soruma verdiğiniz cevaba atıfta] (http://stackoverflow.com/questions/25374196/flyway-why-are-schemas-not-created-when-setinitonmigrate- set-set) "Hiçbir şey" yaklaşımı ile gidiyorum. Bu kurulum ile, bir virgin * veritabanı geçişi çalışır. Ancak varolan bir veritabanında, 'init -initVersion = 2' istenildiği gibi çalışacaktır, ancak 'migrate -initOnMigrate = true -initVersion = 2' tüm geçişleri çalıştırmayı deneyecektir. Bu belgelere çelişkili görünüyor. – markdsievers

-5

nesneleri senin çıkıntısız> eklentileri gerçek

0

Eğer Gradle kullanıyorsanız şema_versions tablosunu içeren veritabanının adı kamuya açık olduğunda. Bu, tabloyu ve meta verileri silmeli ve güncellikleri geri almak için geçişleri çalıştırmalıdır.

İlgili konular