【问题标题】:Liquibase : Migrate.sql does not check precondtionsLiquibase:Migrate.sql 不检查前提条件
【发布时间】: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,但在不支持存储过程的数据库上根本不起作用。有趣的问题。

标签: liquibase


【解决方案1】:

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

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

前提条件的

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

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

希望对你有帮助

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多