【问题标题】:Liquibase changelog parameters in liquibase.propertiesliquibase.properties 中的 Liquibase 更改日志参数
【发布时间】:2017-11-15 07:25:38
【问题描述】:

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

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

作为 JVM 系统属性

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

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

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    可以将变更日志参数放在 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>
    

    【讨论】:

      【解决方案2】:

      是的,如果您想在控制下管理信息,这非常有用...例如不同环境中的密码: 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>
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 问题是 - 在属性文件中为更改日志参数添加什么?
        • 例如。更改日志参数是 ${user_name}
        • 你想达到什么目的?
        • 我有一个类似 create table ${user_name}.ak(id number) 的 sql,我正在尝试在属性文件中设置 ${user_name} 的值。我可以使用命令行参数 liquibase update -Duser_name=test_schema 设置它,但想知道是否可以在属性文件中设置相同的参数。
        • 根据这个页面liquibase.org/documentation/changelog_parameters.html,它应该在你的更新日志中类似于 ${user_name} 和在属性文件中的 user_name=user1。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-30
        • 2020-02-16
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多