2015-11-03 47 views
10

Veritabanı şemasını taşımak için Flyway'i kullanıyoruz ve zaten 100'den fazla geçiş komut dosyasına sahibiz.Flyway geçişlerini "sıkıştırmak" için herhangi bir yol var mı?

Birden çok geçişi tek bir birinci sürüm geçişine "ezdik" edince, bu, şemayı düşürdüğümüz ve yeniden oluşturduğumuz için geliştirme sırasında sorun değil. Ancak, Flyway'in göçleri doğrulayamayacağı için bu üretim işe yaramaz.

Bu durumda ne yapacağım konusunda herhangi bir belge veya en iyi uygulamayı bulamadım. Sorun, dosya miktarının sürekli artmasıdır, üretim zaten en son sürümdeyse, her zaman binlerce geçiş dosyasını görmek istemiyorum. Yani, üretimdeki sürümden daha düşük bir sürüm numarasına sahip olan geçiş komut dosyaları, bizim için ilgisizdir, bu dosyaları tek bir geçişe sığdırırsak harika olurdu.

MySQL kullanıyoruz.

Bunu nasıl ele alabiliriz?

cevap

10

Bu, yeniden baselining ne yapardı?

Hala uçmak için yeniyim, ama işte böyle olacağını düşünüyorum. Bunun için sözümü almadan önce lütfen aşağıdakileri test edin.

Şema_version tablosunu silin. Taşıma komut dosyalarınızı silin.

Çalıştır Flyway bazal (bu schema_version tablosunu yeniden oluşturur ve sürüm 1 olarak bir temel kayıt ekler)

Şimdi gitmeye hazırız. Tüm geçiş komut dosyalarınızı kaldırdığınız sürece önceki sürümlere 'geçiş yapamayacağınızı unutmayın, ancak bu sizin için sorun olmayabilir. adım çözeltisi

Aşama: örneğin MySQL Workbench ile bir komut dosyası olarak

  1. drop table schema_version;
  2. İhracat veritabanı yapısı. Tüm taşıma komut dosyalarını sil Bu senaryoyu V1__Baseline.sql
  3. ad verip komut klasörüne V1__Baseline.sql eklemek, bu yüzden
+0

bu yok mu

  • çalıştırın Flyway en "taban" komutu Done
  • Flyway için kullanılabilen tek script Yani, eğer geliştiricilerden oluşan bir takımsanız, o zaman diğer geliştiricilerin de tablo şemasını bırakmaları gerekir. –

    +0

    Evet. Bu Flyway geçiş komut dosyaları tarafından "yönetilen" her veritabanı aynı muameleye ihtiyaç duyacaktır. –

    +0

    Taban çizgisi çalıştırılırken, mevcut şemanın yeni V1__Baseline.sql şemasının eşleştiğinden emin olun. Varolan şemayı V1__Baseline.sql ile doğrulamak için uçma istemezsem, schema_version tablosunda elde edilen sağlama toplamı olan bir satır oluşturabilir miyim? – lloiacono

    İlgili konular