我刚开始使用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]
答案 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