出于安全考虑,我的生产系统有一个约束,即所有SQL更改都必须由DBA手动执行。因此,我希望使用Liquibase生成SQL,并让DBA执行它。
但是,在生产环境中启动应用程序时,我希望配置Liquibase以确保所有变更集都已执行,并且具有正确的签名。如果任何变更集具有无效的签名或尚未执行,我希望Liquibase抛出一个异常(然后我可以在我的启动序列中处理)。在任何情况下,我都不希望Liquibase在此环境中运行时更新数据库。
在其他环境中,我想让Liquibase在默认配置下运行-即验证现有的变更集未被修改,并执行任何缺少的变更集。
Liquibase支持这种配置吗?我查看了liquibase.configuration.GlobalConfiguration类,但没有看到提供此配置的任何配置参数。
发布于 2019-03-12 05:52:27
您没有指定如何从应用程序运行Liquibase,所以很难准确地说出来。我认为您会希望使用两个不同的命令-一个用于生产环境,另一个用于所有其他环境。在大多数环境中,您可以使用update命令。在生产环境中,您需要使用status命令,该命令返回未部署的变更集数量的计数或未部署的变更集的列表。
发布于 2019-03-14 05:12:52
我已经创建了一个支持此功能的Liquibase-CDI插件。它基于liquibase CDI扩展,但使用CDI观察者模式。它可以在github上找到,网址是https://github.com/benze/liquibase-cdi。
https://stackoverflow.com/questions/55109199
复制相似问题