Liquibase 使用一个变量来设置变更集作者
Liquibase use a variable to set changeset author
是否可以使用某种变量或 属性 在 liquibase 格式的 sql 文件中设置变更集作者。
我尝试在 chnagelog.xml 中设置 属性 并使用作者的 属性 如下所示。
changelog.xml
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<property name="author" value="my-author"/>
<include file="sql/test_schema.sql"/>
</databaseChangeLog>
和test_schemal.sql
--liquibase formatted sql
--changeset ${author}:1
CREATE SCHEMA IF NOT EXISTS test_schema;
--rollback DROP SCHEMA IF EXISTS test_schema;
但是作者没有设置为作者属性, "my-author".
我认为这也可以通过 terraform 模板来完成,但是有没有办法只使用 liquibase 功能来做到这一点?
在更新日志中使用 属性 替换
Liquibase 允许您使用不同的方式来设置 属性 值。 Liquibase 按照以下指定的顺序分配这些值:
作为传递给您的 Liquibase 跑步者的属性。
- 作为 JVM 系统属性。
- 作为环境变量。
- 如果从命令行执行,则作为 CLI 属性
- 如果从命令行执行,则作为 CLI 属性
- command_line参数如果从命令行执行
- 在 DATABASECHANGELOG 文件本身的参数块(属性 元素)中
勾选这个liquibase doc
Liquibase 允许 动态替换变更日志文件中的属性。我们可以在一个文件中配置多个属性,然后在需要的地方使用它们。在你的情况下,我们可以只配置 属性 "authorName" 一些值,然后使用 ${authorName} 语法在更新日志文件中使用它。
豪尔赫在他的回答中提到的一切都是正确的。 Liquibase 按以下顺序为配置的 属性 分配值或确定优先级:
- 作为传递给您的 liquibase 运行程序的属性。
- 作为 JVM 系统 属性
- 作为环境变量
- 作为 CLI 属性,如果你是 运行 liquibase 通过命令行
- 在liquibase.properties文件中
- 在参数块中(DATABASECHANGELOG table 的属性 元素)
您可以按照下面的示例代码片段进行操作:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<changeSet author="${authorName}" id="some-unique-id" dbms="${dbType}" context="some-context">
**My SQL query/ transactional logic goes here**
</changeSet>
</databaseChangeLog>
在liquibase.properties文件中,我将配置这些属性如下:
authorName=Rakhi
dbType=PostgreSQL
注意:以上示例使用了 2 个属性(authorName 和 dbType)。您可以只使用 authorName 或更多。
如果您在创建“liquibase.properties”文件方面需要帮助,请访问this link
干杯!
是否可以使用某种变量或 属性 在 liquibase 格式的 sql 文件中设置变更集作者。
我尝试在 chnagelog.xml 中设置 属性 并使用作者的 属性 如下所示。
changelog.xml
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<property name="author" value="my-author"/>
<include file="sql/test_schema.sql"/>
</databaseChangeLog>
和test_schemal.sql
--liquibase formatted sql
--changeset ${author}:1
CREATE SCHEMA IF NOT EXISTS test_schema;
--rollback DROP SCHEMA IF EXISTS test_schema;
但是作者没有设置为作者属性, "my-author".
我认为这也可以通过 terraform 模板来完成,但是有没有办法只使用 liquibase 功能来做到这一点?
在更新日志中使用 属性 替换
Liquibase 允许您使用不同的方式来设置 属性 值。 Liquibase 按照以下指定的顺序分配这些值:
作为传递给您的 Liquibase 跑步者的属性。
- 作为 JVM 系统属性。
- 作为环境变量。
- 如果从命令行执行,则作为 CLI 属性
- 如果从命令行执行,则作为 CLI 属性
- command_line参数如果从命令行执行
- 在 DATABASECHANGELOG 文件本身的参数块(属性 元素)中
勾选这个liquibase doc
Liquibase 允许 动态替换变更日志文件中的属性。我们可以在一个文件中配置多个属性,然后在需要的地方使用它们。在你的情况下,我们可以只配置 属性 "authorName" 一些值,然后使用 ${authorName} 语法在更新日志文件中使用它。
豪尔赫在他的回答中提到的一切都是正确的。 Liquibase 按以下顺序为配置的 属性 分配值或确定优先级:
- 作为传递给您的 liquibase 运行程序的属性。
- 作为 JVM 系统 属性
- 作为环境变量
- 作为 CLI 属性,如果你是 运行 liquibase 通过命令行
- 在liquibase.properties文件中
- 在参数块中(DATABASECHANGELOG table 的属性 元素)
您可以按照下面的示例代码片段进行操作:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<changeSet author="${authorName}" id="some-unique-id" dbms="${dbType}" context="some-context">
**My SQL query/ transactional logic goes here**
</changeSet>
</databaseChangeLog>
在liquibase.properties文件中,我将配置这些属性如下:
authorName=Rakhi
dbType=PostgreSQL
注意:以上示例使用了 2 个属性(authorName 和 dbType)。您可以只使用 authorName 或更多。
如果您在创建“liquibase.properties”文件方面需要帮助,请访问this link
干杯!