是否可以使用某种变量或属性来设置更改集作者在一个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>
和testrongchemal.sql
--liquibase formatted sql
--changeset ${author}:1
CREATE SCHEMA IF NOT EXISTS test_schema;
--rollback DROP SCHEMA IF EXISTS test_schema;
但是,作者没有被设置为author属性"my-author"
我认为这也可以用地形模板来完成,但是有没有一种方法可以只使用液态基功能来做到这一点?
Liquibase允许动态替换属性在变更日志文件中。我们可以在一个文件中配置多个属性,然后在需要的地方使用它们。在你的例子中,我们只需要配置property "authorName",然后使用${authorName}语法在变更日志文件中使用。
无论乔治在他的回答中提到什么都是正确的。Liquibase按以下顺序分配配置属性的值或优先级:
- 作为传递给您的液基运行器的属性。
- 作为JVM系统属性
- 作为环境变量
- 如果通过命令行 运行liquidbase,则作为CLI属性。liquibase
- 。属性文件
- 在parameters块(DATABASECHANGELOG表的属性元素)
您可以按照下面的示例代码片段做:
<?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。我将按如下方式配置这些属性:
authorName=Rakhi
dbType=PostgreSQL
注意:上面的例子使用了两个属性(authorName和dbType)。您可以只使用authorName,甚至更多。
如果您需要帮助创建" liquibbase .properties"文件,访问此链接
干杯!
在更改日志中使用属性替换
Liquibase允许您使用不同的方法来设置属性值。Liquibase按以下顺序分配这些值:
作为传递给Liquibase运行器的属性。
- 作为JVM系统属性。
- 作为环境变量。
- 作为CLI属性,如果从命令行执行
- 作为CLI属性,如果从命令行执行
- command_line参数如果从命令行执行
- 在DATABASECHANGELOG文件本身的参数块(属性元素)中
查看此液基文档