【问题标题】:Liquibase: How to execute just changeset that you want?Liquibase:如何执行您想要的变更集?
【发布时间】:2021-01-02 07:13:10
【问题描述】:

如果在 liquibase 文件中您有几个变更集,并且您只想执行您想要的一个,如何仅通过 ID 提及那个?这在实践中是否可能? 例如,我只想执行第一个变更集:

src/main/resources/liquibase/test.sql::DEV-9563::user.user
src/main/resources/liquibase/test.sql::DEV-9569::user1.user1
src/main/resources/liquibase/test.sql::DEV-9569_1::user1.user1

我在 Intellij-idea 中使用终端。 执行查询的命令是 mvn liquibase:update

【问题讨论】:

    标签: maven intellij-idea liquibase


    【解决方案1】:

    我在我的主更改日志主文件中注释更改集,直到我准备好将更改部署到特定环境。

    【讨论】:

      【解决方案2】:

      是的,这是可能的。 您可以使用上下文或标签来实现您的目标。 因为我从命令行使用它,所以我是这样做的:

      假设这是您的示例变更集文件:

      -- liquibase formatted sql
      
      -- changeset A1:1111-1 context:dev,prod,release labels:create
      create table company_test (
          id int primary key,
          name varchar(50) not null,
          address1 varchar(50),
          address2 varchar(50),
          city varchar(30)
      )
      -- rollback drop table company_test
      
      -- changeset A1:1111-2 context:dev,prod,release labels:alter
      alter table company_test add column country varchar(2)
      -- rollback alter table company_test drop column country
      
      
      

      所以如果我只想运行第一个变更集,我将为例如 testX 或标签添加一个上下文并更新它。

      CLI 命令

      liquibase --defaultsFile=env/local/liquibase.properties  --changeLogFile=changelogs/changelog.1234.sql  --logLevel=severe --defaultSchemaName=test  --contexts=testX  update
      

      因此,您可以使用上下文修改您的变更集,并且您必须从 maven 将其添加到 maven 采用的属性文件中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-05
        • 1970-01-01
        • 2019-01-14
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        相关资源
        最近更新 更多