1. 程式人生 > >利用liquibase自動化資料庫變更、持續整合

利用liquibase自動化資料庫變更、持續整合

目前現狀,資料庫是與應用程式完全脫離的單獨實體

  1. 手工變更資料庫(環境變多時,易出錯)
  2. 使用低效的手工比對方法管理資料庫版本之間的變更(耗時長、易出錯)
  3. 不能與團隊的其他成員分享資料庫變更
  4. 程式碼與DDL或DML不同時提交更新,會出現不一致的情況

實現形式

以XML儲存資料庫變化,其中以作者和ID唯一標識一個變化(ChangSet)。 在資料庫中儲存資料庫修改歷史(DatabaseChangeHistory),在資料庫升級時自動跳過已應用的變化

開始使用 LiquiBase需要以下步驟

  1. 建立一個數據庫變更日誌(change log)檔案 liquibase-data.xml liquibase-table.xml liquibase-view.xml
  2. 在變更日誌檔案內部建立一個變更集(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>
  1. 提交程式碼時同步提交變更集
  2. 通過Jenkins更新時執行變更集
  3. 檢驗資料庫中的變更
  4. 驗證程式功能的正確性

changeSet維護說明

  1. 選擇指令碼放置在對應XML檔案中
  2. ID命名規則:日期+兩位數序號
  3. 註明作者
  4. context設定需要更新或者不更新到指定環境 注:不需要特殊指定時,忽略context即可
  5. 中一次可以維護多個sql
  6. 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>