Liquibase 不会为 SQL 文件格式生成标签

Liquibase does not generate tags for SQL files format

我的 yaml master 更新日志:

databaseChangeLog:
    - includeAll:
        path: db/changelog/changes/

我的两个 SQL 文件:

文件1:

-- liquibase formatted sql
-- changeset user1:1
CREATE TABLE public.version
(
 ...
);


CREATE TABLE version_files
(
 ...
);

-- rollback DROP TABLE version_files;
-- rollback DROP TABLE version;

file2:

-- liquibase formatted sql
-- changeset user1:2
INSERT into version(id, version_json) values('12334', '{"a":1, "b":2}'::jsonb)
-- rollback DELETE FROM Version WHERE id='12334';

当我 运行 mvn:liquibase:update 或刚启动 spring 启动应用程序时,SQL 文件中的语句执行得很好,但是,永远不会设置 databasechangelog table 的标记列值。这样,每次调用 mvn liquibase:rollback -Dliquibase.rollbackTag=1 都会失败,因为无法找到标记“1”。

如果我用 mvn liquibase:tag “手动”设置一个标签,那么它就可以工作,我可以回滚到这个标签。但是 easiest/cheapest 修改我的代码以在使用 mvn liquibase:update 更新数据库或启动 spring 启动应用程序时“自动”设置任何类型的标签的方法是什么?

您可以在变更日志文件中有一个单独的变更集,它会定义一个标签。

当 运行 更新命令时,liquibase 将首先执行 tagDatabase 变更集,然后部署您的 sql 脚本。