Liquibase—defaultsFile=liquibase_dev.properties ChangelogSyncSQL 输出的SQL文件为:

文章插图
可见,SQL文件只插入了一个DATABASECHANGELOG表 。它会告知Liquibase这些对象已经创建好了,不需要再次运行 。现在,我们便可以将其插入到Oracle数据库中了:
Liquibase—defaultsFile=liquibase_dev.properties ChangelogSync 此时,在DATABASECHANGELOG表中会有4个新的变更集:
文章插图
您也许会问,这些奇怪的“raw”ID 是什么?为什么作者又被称为“includeAll”呢?这是因为我们采取了最简单、最快捷的方式,将现有的项目迁移到了Liquibase处,而这些变更集是被自动创建的 。
当然,您也可以进行一些更改 。例如,在P_ADD_JOB_HISTORY中,只需添加一个changeset,就像您在创建新数据库对象时常做的那样 。

文章插图
更改P_ADD_JOB_HISTORY
然后运行Liquibase的更新命令:

文章插图
现在,Changeset就带有了合适的作者、ID等信息 。
在上面的示例中,我向您展示了添加现有对象(可创建或替换)的简单方法,且无需手动创建变更集 。我认为这是将Liquibase安装到拥有数百个对象的、现有数据库中的最佳方式 。不过,当涉及到库里有不能被替换的对象(如表格)时,我们需要使用另一种方式 。
当现有项目中没有很多对象时创建或替换的对象正如前面所描述过的,请添加对象,并在master.xml文件中记下文件夹的路径 。接着请运行ChangelogSync,并让Liquibase自动创建raw/includeAll/filename的变更集 。

文章插图
由Liquibase生成的变更集
当然,您也可以采用更好的方法,为每个文件创建一个变更集,如下图所示:

文章插图
虽然这会需要更多的工作,但是您可以在日志中获得更全面的信息:

文章插图
针对无法创建或替换的对象,您同样有两种方法:
- 对这些对象不做任何操作,但请记住始终为其中的每个更改(包括:更改表、删除列等)创建变更集,并将其添加到changelog.sql文件中 。
- 创建变更集并将它们标记为过去已被执行过 。

文章插图
新的scripts_before_liquibase.xml文件
这两个文件能够方便您在表中创建ref_constraint时,避免产生冲突 。如下图所示,请记住在master.xml文件中,将路径添加到新创建的XML文件(即
HR/script_before_liquibase/scripts_before_liquibase.xml)中 。

文章插图
下面是为各种表和约束创建的变更集 。

文章插图
在添加了所有的变更集之后,我们将它们标记为已执行的状态 。
让我们运行ChangelogSyncSQL来进行预览,并让ChangelogSync对数据库执行SQL 。

文章插图
运行ChangeSyncSQL和ChangelogSync
下图展示了ChangelogSync命令执行后,更新了的数据库 。至此,我们已大功告成,您也可以选用自己喜欢的方式,通过Liquibase来实现数据库的自动化 。

文章插图
小结如您所见,通过使用Liquibase,我们可以在数据库更改的发布过程中,跟踪所有的相关内容 。其中,需要开发人员遵守如下流程:
推荐阅读
- 一文带你搞定TCP连接队列
- SQLSERVER也能部署在linux环境?SQLServer2019在CENTOS7部署详解
- 微软|Win11中的祖传UI从Win9X流传至今!一文了解详情
- 一文看懂编程的本质,程序员有前途么?
- 一文掌握SQL基础
- 一文讲透 Python 协程
- 一文带你搞定TCP滑动窗口
- 2020考研英语试题及分数详解
- 详解:阳台可以摆放鞋柜吗
- 详解:你所不知的厕所风水知识
