liquibase.properties 中的 Liquibase 变更日志参数
Liquibase changelog parameters in liquibase.properties
根据文档,参数值按以下顺序查找:
作为参数传递给您的 Liquibase 运行程序(有关如何传递它们的信息,请参阅 Ant、command_line 等文档)
作为 JVM 系统属性
在 DatabaseChangeLog 文件本身的参数块(标记)中。
我可以在标准属性文件中设置这些参数吗?
是的,有可能:http://www.liquibase.org/documentation/liquibase.properties.html。
并使用 --defaultsFile 传递 属性 文件。
可以将更改日志参数放入liquibase.properties,或自定义 --defaultsFile。 Reading the source 表示您必须 为属性添加前缀 "parameter."。
您的错误可能如下所示:
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>
是的,如果您想在控制下管理信息...例如不同环境中的密码,这将非常有用:
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>
根据文档,参数值按以下顺序查找:
作为参数传递给您的 Liquibase 运行程序(有关如何传递它们的信息,请参阅 Ant、command_line 等文档)
作为 JVM 系统属性
在 DatabaseChangeLog 文件本身的参数块(标记)中。
我可以在标准属性文件中设置这些参数吗?
是的,有可能:http://www.liquibase.org/documentation/liquibase.properties.html。 并使用 --defaultsFile 传递 属性 文件。
可以将更改日志参数放入liquibase.properties,或自定义 --defaultsFile。 Reading the source 表示您必须 为属性添加前缀 "parameter."。
您的错误可能如下所示:
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>
是的,如果您想在控制下管理信息...例如不同环境中的密码,这将非常有用: 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>