目前现状,数据库是与应用程序完全脱离的单独实体
- 手工变更数据库(环境变多时,易出错)
- 使用低效的手工比对方法管理数据库版本之间的变更(耗时长、易出错)
- 不能与团队的其他成员分享数据库变更
- 代码与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>