【问题标题】:Does Spring boot Support Fast fail on Liquibase在 Liquibase 上 Spring boot Support Fast 是否失败
【发布时间】:2020-09-21 03:23:36
【问题描述】:

来自Spring DB Initialization docs,Spring boot DB 初始化使用 Spring JDBC 支持 功能快速失败 - 这意味着如果 DB 初始化脚本或迁移脚本中有任何问题,则 Spring 引导上下文初始化失败。结果 Spring boot server 不会启动。

现在我们可以在使用像 liquibase 这样的高级数据库迁移工具时拥有这个功能吗?

Spring Docs 在 liquibase 部分对此没有任何说明。这个特性是否只在 Spring JDBC 初始化中有效?

【问题讨论】:

    标签: spring-boot spring-data-jpa liquibase


    【解决方案1】:

    当您的 liquibase 脚本出现问题时,应用程序将无法启动,因为数据源未正确初始化。

    【讨论】:

    • 那是不对的。我正在工作的项目将在输出时抛出 Liquibase 迁移异常,然后恢复 Spring Boot 上下文加载。
    【解决方案2】:

    您可以使用“前提条件”指定所需的行为。
    默认情况下,它实际上快速失败,但你可以覆盖它(使用 SQL 语法的示例):

    -- preconditions onFail:WARN onError:WARN
    

    可用参数:

    HALT:立即停止整个变更日志的执行。 [默认]
    继续:跳过变更集。变更集的执行将是 下次更新时再次尝试。继续更新日志。
    MARK_RAN:跳过变更集,但将其标记为已执行。继续 与变更日志。 WARN 输出警告并继续执行 变更集/变更日志正常。

    https://docs.liquibase.com/concepts/advanced/preconditions.html

    【讨论】:

    • 如你所说,我检查了 liquibase master.xml 没有明确设置此前提条件,默认设置应该很快失败。但它没有发生任何想法为什么它没有发生?
    • 此属性在 ChangeSet 中设置,而不是在 master.xml 中。查看 ChangeSet(可能是 XML,但也可能是 YAML、普通 SQL 或 JSON,具体取决于您的设置)。
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 2020-11-12
    • 2019-09-01
    • 2018-09-19
    • 2022-06-27
    • 2022-01-12
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多