2017-06-05 75 views
1

我們正在使用git流模型進行開發,並嘗試整合liquibase來高效地管理數據庫版本控制。問題出現在開發人員正在開發功能分支時,並且已經在其數據庫和另一開發人員的數據庫上執行了一個DB腳本,但它尚未成爲任何發行版的一部分,因此尚未標記。現在該功能已經過測試併成爲發行版的一部分,並且我們爲變更集添加了標籤並在生產中執行。使用GitFlow開發模型管理Liquibase

問題是如何回滾開發人員的機器所做的更改,因爲當腳本執行時沒有定義標籤,當我們嘗試更新它時,當前標籤將顯示錯誤「表已經存在存在」。

如何有效地通過liquibase管理這些條件?

回答

0

我們做的是不掛的Git或GitFlow什麼,但對數據庫本身:

每次執行數據庫腳本的時候,它通過包裝也將記錄說在一個專用的表腳本執行完成的數據庫。
這樣,下次應用相同的腳本時,包裝器將檢測到它已被執行,並且不會再應用它。

這是一個product like Flyway已經做的實現(如在這個答案中,you can use both: Liquidbase and Flyway,他們seem to differ)。
問題是:這不能單獨使用版本控制系統進行管理:您需要額外的工具來執行/控制數據庫升級過程。

+0

那麼,如何在給定的情況下處理我的情況呢?問題是腳本已經執行了一個變更集,而變更集並不是發佈標籤的一部分,現在,當它成爲發行版的一部分時,我需要將變更集應用到適當的發佈標籤,最終失敗。 –

+0

通常,您可以在發行版中添加第二個腳本,以修復第一個腳本的介紹 – VonC