当前位置: 首页 > 知识库问答 >
问题:

Liquibase-如何跳过已执行的变更集

何玉韵
2023-03-14

我有一个由mysql数据库支持的dropwizard应用程序。我正在使用liquibase包装器进行数据库迁移

首先,我使用“db dump”命令自动生成迁移。xml文件。

现在我正在重构数据库,我希望能够更新特定的列名和表的名称。

我使用先决条件跳过已经生成的表以跳过“createTable”命令

<preConditions onFail="MARK_RAN">
            <not>
                <tableExists tableName="myTable" />
            </not>
        </preConditions>

现在如何跳过主键和外键约束的执行?在变更日志级别是否有一个先决条件可以用来表示“跳过已执行的变更集”?或者我只是创建一个新的migrations.xml?这会删除现有数据吗?

共有1个答案

马边浩
2023-03-14

检查此项以了解先决条件http://www.liquibase.org/documentation/preconditions.html

您不能告诉liquibase跳过所有已执行的变更集,但可以将该文件排除在外(您必须将migration.xml保存在其他文件夹(即存档)中,因为有一天您可以从头开始创建db结构,并且您将需要该变更集)

这意味着您可以使用要执行的更改集创建新的. xml文件。Liquibase不会删除任何数据,它仅适用于您提供给它的xml文件。

 类似资料:
  • 我试图从现有数据库(MySQL)中使用liquibase(3.5.5)。 > C: /液化酶-3.5.5/liquibase。bat—驱动程序=com。mysql。jdbc。驱动程序^--classpath=C:/Libraries/mysql-connector-java-5.1.37-bin。jar^--changeLogFile=db。变更日志。xml^--url=“jdbc:mysql:/

  • 我不小心运行了这个变更集,但是我想对这个变更集做一些修改。这仍然处于开发模式,所以我不想添加另一个变更集来恢复这些更改。我计划通过直接在数据库中执行sql查询从表中删除PAYLOAD_SIZE列。之后,我想通过做一些修改再次运行变更集。 从liquibase文档中,我了解到liquibase在表DATABASECHANGELOG中为成功执行的变更集创建了一个条目。因此,我计划从表DATABASEC

  • 在Liquibase论坛的一次讨论中,开发人员Nathan Voxland说Liquibase应该在每个变更集之后提交。我知道这是一个七年前的线程,所以从那以后可能发生了很多变化,但也许没有? 它应该在变更集之后提交。在大多数数据库上,addColumn也会自动提交。 changeSet标记的文档可以解释为“在changelog中的所有前提条件成功之后提交”,这与7年前的帖子相矛盾。 我有一个ma

  • 问题内容: 我正在定义一个上下文管理器类,并且如果实例化过程中满足某些条件,我希望能够跳过代码块而不会引发异常。例如, 问题答案: 如果您想要一个临时解决方案,它使用withhacks(特别是来自AnonymousBlocksInPython)的思想,那么它将起作用: 比较以下内容: 与

  • 我们使用liquibase对数据库进行源代码控制。最初,我们从Postgres开始,创建了数据类型为特定于Postgres的列的变更集。 例如,我们有一个变更集,它创建了具有“JSON”类型字段的表。现在,我们想转移到其他数据库。因此,当我们针对另一个数据库运行变更集时,它无法创建表。我尝试添加“failOnError=false”。但是,后面的变更集失败,因为该表不存在。 您能建议如何重构旧的变

  • [Update]感谢Mark的回复,我在我们的开发环境中添加了上述变更集的版本。当我们的生产数据库是1.0的,我想直接升级到2.0(或3.0),但只想使用liquibase生成SQL命令并手动运行它。 回滚有一个问题,如果我回滚我的开发数据库,我需要重新创建已经在上面的数据。对此有什么建议吗?