Liquibase通过Maven回滚

时间:2018-05-17 17:56:26

标签: maven liquibase rollback

我刚开始使用Liquibase来管理我的架构,并且我使用Maven命令来执行Liquibase。我已成功更新架构,但是在测试回滚功能时我遇到了问题。

SQL格式更改日志

--changeset me:create-myschema
CREATE SCHEMA myschema;

--changeset me:create-table1
CREATE TABLE myschema.table1(
  id bigint,
  description varchar(100)
);
--rollback DROP TABLE myschema.table1;

--changeset me:create-table2
CREATE TABLE myschema.table2(
  id bigint,
  code varchar(10)
);
--rollback DROP TABLE myschema.table2;

-- changeset me:tag-1.0
UPDATE databasechangelog SET tag='1.0' WHERE dateexecuted = (SELECT max(dateexecuted) FROM databasechangelog);

Maven回滚命令

mvn liquibase:rollback -Dliquibase.rollbackTag=1.0

结果

[错误]无法在项目myproject上执行目标org.liquibase:liquibase-maven-plugin:3.6.1:rollback(default-cli):设置或运行Liquibase时出错:liquibase.exception.RollbackImpossibleException:No inverse to liquibase.change.core.RawSQLChange created - > [帮助1]

1 个答案:

答案 0 :(得分:1)

Liquibase表示您没有为变更集me:tag-1.0定义回滚标记。由于Liquibase不知道该变更集是一个标记数据库'在变更集中,您必须通过为该变更集指定空回滚来告诉它没有回滚。

-- changeset me:tag-1.0
UPDATE databasechangelog SET tag='1.0' WHERE dateexecuted = (SELECT max(dateexecuted) FROM databasechangelog);
-- rollback

-- changeset me:next-change