【问题标题】: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 采用的属性文件中。