利用liquibase自動化資料庫變更、持續整合
阿新 • • 發佈:2018-12-15
目前現狀,資料庫是與應用程式完全脫離的單獨實體
- 手工變更資料庫(環境變多時,易出錯)
- 使用低效的手工比對方法管理資料庫版本之間的變更(耗時長、易出錯)
- 不能與團隊的其他成員分享資料庫變更
- 程式碼與DDL或DML不同時提交更新,會出現不一致的情況
實現形式
以XML儲存資料庫變化,其中以作者和ID唯一標識一個變化(ChangSet)。 在資料庫中儲存資料庫修改歷史(DatabaseChangeHistory),在資料庫升級時自動跳過已應用的變化
開始使用 LiquiBase需要以下步驟
- 建立一個數據庫變更日誌(change log)檔案 liquibase-data.xml liquibase-table.xml liquibase-view.xml
- 在變更日誌檔案內部建立一個變更集(change set)
<changeSet id="2018100801" author="wangshuo"> <sql> update t_system_dict a set a.can_update = '0',a.can_del = '0' where a.groupcode = 'ZD_SKFS' and a.dictcode = '4'; </sql> <comment>t_system_dict網路教學不允許刪除和修改</comment> </changeSet>
- 提交程式碼時同步提交變更集
- 通過Jenkins更新時執行變更集
- 檢驗資料庫中的變更
- 驗證程式功能的正確性
changeSet維護說明
- 選擇指令碼放置在對應XML檔案中
- ID命名規則:日期+兩位數序號
- 註明作者
- context設定需要更新或者不更新到指定環境 注:不需要特殊指定時,忽略context即可
- 中一次可以維護多個sql
- comment寫明對應實現功能、指令碼實現目的
樣例
<changeSet id="2018100801" author="wangshuo" context="!jwgly and !beta and !test"/context="jwgly,beta"> <sql> update t_system_dict a set a.can_update = '0',a.can_del = '0' where a.groupcode = 'ZD_SKFS' and a.dictcode = '4'; </sql> <comment>t_system_dict網路教學不允許刪除和修改</comment> </changeSet>