我的生产系统有一个约束,即出于安全目的,所有SQL更改必须由DBA手动执行。因此,我想使用Liquibase生成SQL,并让DBA执行它。
但是,在Production中启动应用程序时,我想配置Liquibase以确保所有变更集都已执行并具有正确的签名。如果任何变更集的签名无效或未执行,我希望Liquibase引发异常(然后可以在启动序列中处理该异常)。在任何情况下,我都不希望Liquibase在这种环境下运行时更新数据库。
在其他环境中,我想将其留给Liquibase以默认配置运行-验证现有的变更集是否已被修改并执行任何丢失的变更集。
Liquibase是否支持这种配置?我已经看过liquibase.configuration.GlobalConfiguration
类,但是看不到任何可以提供此配置的配置参数。
答案 0 :(得分:1)
您没有指定如何从应用程序中运行Liquibase,因此很难确切说出。我认为您将需要使用两种不同的命令-一种用于生产,另一种用于所有其他环境。在大多数环境中,使用update
命令。在生产中,您将需要使用status
命令,该命令将返回未部署变更集数量的计数或未部署变更集的列表。
答案 1 :(得分:1)
我创建了一个支持此功能的Liquibase-CDI插件。它基于liquibase-cdi扩展,但是使用CDI观察器模式。可以在github上的https://github.com/benze/liquibase-cdi
上找到