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 脚本。
我的 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 脚本。