目前現狀,數據庫是與應用程序完全脫離的單獨實體
- 手工變更數據庫(環境變多時,易出錯)
- 使用低效的手工比對方法管理數據庫版本之間的變更(耗時長、易出錯)
- 不能與團隊的其他成員分享數據庫變更
- 代碼與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>