在我们的例子中,liquibase 用于更新现有安装的数据库。新安装的设备已经是最新的。
假设我们有一个新的安装。启动应用程序将强制执行 liquibase 更改集(例如更改列的类型),但正如我之前提到的,没有任何内容可以更新,因为列已经使用正确的类型创建了。
liquibase 是否识别出表列已经是最新的,或者是否尝试执行更改集,因为数据库更改日志表中没有相应的条目?
Liquibase 使用另一种方法来避免分析目标数据库的数据字典。这使得数据库操作更加简单并且更加跨平台。
特殊表“DATABASECHANGELOG”保存应用于目标数据库实例的变更集的记录。该表还包含一个校验和(在运行时计算),以确定在 liquibase 运行之间是否更改了变更集。
因此,如果您更改了表列的类型,liquibase 可以检测到这一点,并在针对现有数据库运行时抛出错误。(显然,在新的数据库上,该表将按预期创建)。
最后,变更集文档描述了两个可选属性(“runAlways”和“runOnChange”),它们可以告诉 lqiuibase 将变更集多次重新应用到数据库。还有一个“clearCheckSums”命令可用于重置现有数据库的校验和。显然,当使用这样的选项时,您需要知道自己在做什么:-)
归档时间: |
|
查看次数: |
3151 次 |
最近记录: |