Liquibase可以仅用于验证已应用ChangeSet而不实际执行它们吗?

时间:2019-03-11 19:41:50

标签: java liquibase

我的生产系统有一个约束,即出于安全目的,所有SQL更改必须由DBA手动执行。因此,我想使用Liquibase生成SQL,并让DBA执行它。

但是,在Production中启动应用程序时,我想配置Liquibase以确保所有变更集都已执行并具有正确的签名。如果任何变更集的签名无效或未执行,我希望Liquibase引发异常(然后可以在启动序列中处理该异常)。在任何情况下,我都不希望Liquibase在这种环境下运行时更新数据库。

在其他环境中,我想将其留给Liquibase以默认配置运行-验证现有的变更集是否已被修改并执行任何丢失的变更集。

Liquibase是否支持这种配置?我已经看过liquibase.configuration.GlobalConfiguration类,但是看不到任何可以提供此配置的配置参数。

2 个答案:

答案 0 :(得分:1)

您没有指定如何从应用程序中运行Liquibase,因此很难确切说出。我认为您将需要使用两种不同的命令-一种用于生产,另一种用于所有其他环境。在大多数环境中,使用update命令。在生产中,您将需要使用status命令,该命令将返回未部署变更集数量的计数或未部署变更集的列表。

答案 1 :(得分:1)

我创建了一个支持此功能的Liquibase-CDI插件。它基于liquibase-cdi扩展,但是使用CDI观察器模式。可以在github上的https://github.com/benze/liquibase-cdi

上找到