liquibase.properties中的Liquibase changelog参数

时间:2016-08-12 10:02:07

标签: liquibase

根据文档参数值按以下顺序查找:

作为参数传递给您的Liquibase运行器(请参阅Ant,command_line等文档,了解如何传递它们)

作为JVM系统属性

在DatabaseChangeLog文件本身的参数块(Tag)中。

我可以在标准属性文件中设置这些参数吗?

3 个答案:

答案 0 :(得分:6)

可以将changelog参数放在liquibase.properties或自定义--defaultsFile中。 Reading the source表示您必须在属性前加上“参数”。

您的错误可能如下所示:

SEVERE 11/4/16 10:26 AM: liquibase: Unknown parameter: 'read_only_user'
liquibase.exception.CommandLineParsingException: Unknown parameter: 'read_only_user'
    at liquibase.integration.commandline.Main.parsePropertiesFile(Main.java:453)

示例liquibase.properties:

driver=oracle.jdbc.driver.OracleDriver
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbhost)(PORT=1600))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=devdb)))"
username=scott
password=tiger
defaultSchemaName=app_admin
promptOnNonLocalDatabase=false
parameter.read_only_user=app_read

在变更集中使用参数:

<changeset author="Ryan" id="1">
  <sql>GRANT SELECT ON APP.SOME_TABLE TO ${read_only_user}</sql>
</changeset>

答案 1 :(得分:1)

是的,如果你想管理受控制的信息......就像在不同的环境中使用密码一样非常有用: liquibase.properties:

parameter.pass_admin=idonthavepassword

和更改日志:

<changeSet author="rbs" id="create_user_admin" labels="inicial">
    <preConditions onFail="CONTINUE">
    <sqlCheck expectedResult="0">SELECT COUNT(1) FROM pg_roles WHERE rolname='admin'</sqlCheck>
    </preConditions>
    <sql>CREATE USER admin PASSWORD '${pass_admin}' LOGIN SUPERUSER NOCREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1
        <comment>Creating admin user</comment>
    </sql>
</changeSet>

答案 2 :(得分:0)

是的,有可能:http://www.liquibase.org/documentation/liquibase.properties.html。 并使用--defaultsFile传递属性文件。