在 liquibase 格式的 sql 文件中注释 sql 查询

Posted

技术标签:

【中文标题】在 liquibase 格式的 sql 文件中注释 sql 查询【英文标题】:comment sql queries in liquibase formatted sql files 【发布时间】:2019-09-19 10:18:29 【问题描述】:

我有 liquibase 格式的 sql 文件,其中包含以下变更集,其中 sql 查询被注释掉

--liquibase formatted sql

--changeset harv:1
--comment test
--update table set col=null;

--changeset harv:2
--comment test
--update table set col1=null;

当我在 oracle 数据库上运行 liquibase 时,这些查询没有被执行,因为我评论了它们,但是正在执行这些变更集的数据库更改日志表中的条目。

这是评论 sql 查询的正确方法吗?如果这就是为什么 liquibase 会在 databasechangelog 表中将这些更改集标记为已执行?

【问题讨论】:

【参考方案1】:

Liquibase 从 cmets 中读取 sql 文件中变更集的信息,例如:

--changeset harv:1

因此,在解析您的文件时,它会找到这一行并创建一个变更集“harv:1”。 然后,由于您已经注释掉了实际的 sql,因此变更集将为空。但它仍然是一个变更集。 当它执行所有变更集时,它也会执行“harv:1”,但其中没有 sql,所以什么也没有发生。它仍然会将此变更集标记为已执行。

我还没有通过实际执行示例来验证这一点。这只是我对可能发生的事情的理论。

【讨论】:

我已经验证过了。是真的。同样对于不创建变更集,我也像这样-- --changeset harv:1 注释掉了变更集 好。标记这是正确的答案。这就是你在 *** 上的做法。 :-)

以上是关于在 liquibase 格式的 sql 文件中注释 sql 查询的主要内容,如果未能解决你的问题,请参考以下文章

Liquibase:以 SQL 格式设置 dbms 字段

Liquibase命令所产生的结果与直接在SQL中运行它的结果不同

仅使用 databasechangelog 表生成 liquibase sql 文件

Liquibase Autopick 可以像 Flyway 这样的新变更集文件吗?

从 databasechangelog 读取 Liquibase 需要很长时间

Liquibase 对 sql 中所有更改日志文件的先决条件