2016-11-10 90 views
0

我正在嘗試使用Liquibase來管理設備的後端SQLite數據庫。這個想法是,在安裝時,應用程序可以生成回滾腳本,如果應用程序被卸載並替換爲早期版本,則可以使用該腳本。如何在Liquibase中每天創建多個標籤?

出現的問題是,運行tagDatabase變更集將覆蓋當天早些時候完成的所有標記。檢查documentation揭示了標記操作運行如下面的示例SQL:

UPDATE DATABASECHANGELOG SET TAG = 'version_1.3' WHERE DATEEXECUTED = (SELECT MAX(DATEEXECUTED) FROM (SELECT DATEEXECUTED FROM DATABASECHANGELOG) AS X); 

那麼,有沒有Liquibase的一天做多個標籤的範圍內的方法嗎?還是我需要編寫自己的SQL來更改DATABASECHANGELOG表?我寧願不這樣做,因爲它可能會打破未來版本的Liquibase。

+0

我沒有明白你的意思,「出現的問題是運行tagDatabase變更集將覆蓋當天早些時候完成的任何標籤。」它只是標記數據庫中最後一次執行的變更集,其中包含您指定的標記,您覆蓋的問題是什麼? – dbf

+0

我的問題是,在覆蓋現有標籤時,不再可能針對它們生成回滾。 –

回答

1

好吧,我看到你的數據庫看起來像DATEEXECUTED沒有時間(只有日期)。是否有可能隨着時間的推移將其改爲日期類型? 我在這裏看到一些討論:https://github.com/liquibase/liquibase/pull/392看起來像一個已知的問題,但在修復中提到的數據庫列表中沒有sqllite。 因此,看看最新版本,如果它沒有修復那裏可能還沒有支持,你需要使用普通的SQL查詢或自定義更改(http://www.liquibase.org/documentation/changes/custom_change.html)自己實現此標記邏輯。