Liquibase:Migrate.sql 不检查前提条件

Posted

技术标签:

【中文标题】Liquibase:Migrate.sql 不检查前提条件【英文标题】:Liquibase : Migrate.sql does not check precondtions 【发布时间】:2013-07-16 08:45:25 【问题描述】:

我使用 liquibase 根据变更集生成 SQL 文件。但是当我使用 liquibase:updateSQL 时,它不会在生成 SQL 文件之前检查先决条件

我有一个前提条件是在创建表之前检查表是否存在。

在这种情况下,即使表存在,“仍然会生成创建表 SQL 语句”。

当我运行 liquibase:update 目标时,此前提条件已正确检查。

那么 liquibase 在生成 sql 文件时不检查前置条件吗?

谢谢。

【问题讨论】:

我建议对 liquibase 项目提出异议。我猜先决条件很难呈现为纯 SQL。例如,该表可能存在于您的数据库实例中,但可能在另一个数据库实例中丢失...当通过 liquibase 运行迁移时,它可以使用 java.lang.基于 SQL 的解决方案可能必须在 Oracle 上生成 PL/SQL,但在不支持存储过程的数据库上根本不起作用。有趣的问题。 【参考方案1】:

您可能已经找到了答案,但以防万一这可能会有所帮助:

http://forum.liquibase.org/topic/unexpected-behaviour-of-preconditions-with-updatesql

前提条件的

onSqlOutput="TEST" 属性听起来像您正在寻找的。

在生成 updateSQL 时,请注意您编写的先决条件或何时测试它们。依赖先前应用的补丁(可能尚未在您的实例中执行)的前提条件可能会导致错误。

希望对你有帮助

【讨论】:

【参考方案2】:

可能有助于提供一些代码。尤其是您允许其他人评估是否存在问题的前提条件。

【讨论】:

以上是关于Liquibase:Migrate.sql 不检查前提条件的主要内容,如果未能解决你的问题,请参考以下文章

我不明白 liquibase diff 试图通过这些选择来确定啥?

Liquibase 如何为 oracle 映射布尔值?

sql migrate.sql

Liquibase 格式的 SQL 更改日志和多个文件

如果运行 spring boot 并让 liquibase 自动执行迁移,则 Liquibase databasechangelog 表存储相对路径

液化石油气。如何跟踪存储过程更改