2015-01-09 104 views
0

我正在開發一個允許使用插件的網絡應用程序(插件不僅會在運行時更改,而且更像是一個訂購軟件的插件A,B,C和選擇將很少改變)。允許使用插件的飛行路線和應用程序

一些插件需要在數據庫模式中添加自己的表。核心架構目前由flyway管理,這使得遷移變得如此簡潔而且無痛,我想繼續這樣做。 應該在同一模式中創建新表,以便可以共享JDBC連接,並且插件表可以將外鍵包含到核心表中。

但據我瞭解,flyway不會接受多個引用相同模式的flyway實例。那是對的嗎?有沒有其他方法可以讓場景起作用?

回答

1

應該在相同模式中創建新表,以便可以共享JDBC連接,並且插件表可以將外鍵包含到核心表中。

這不一定是這種情況。您可以爲每個插件分配自己的架構和Flyway實例。你可以在模式之間有外鍵,你可以可以通過同一個連接引用多個模式。

如果這不是一個選項,每個插件仍然有一個Flyway實例(每個都有自己的元數據表),請注意,如果它們全都指向相同的模式,則在任何一個插件上調用clean()他們將擦除整個模式。

最後,您還可以擁有一個版本控制命名空間,其中某些遷移在某些環境中根本不存在(插件未安裝)。

+0

值得注意的是,元數據表配置了'flyway.table'屬性,並且flyway會在第一次嘗試遷移時抱怨數據庫不是空的。這可以通過設置'flyway.baselineVersion = 0'' flyway.baselineOnMigrate = true'來繞過,然後正常遷移。 – yankee 2015-01-11 22:08:12

相關問題