Liquibase更改日志参数错误:错误:语法错误在或附近" $"

时间:2018-04-25 13:51:28

标签: liquibase

我有更改日志:

   <sql>
        DROP ROLE IF EXISTS tenant_access;

        CREATE ROLE tenant_access
        NOSUPERUSER INHERIT NOCREATEDB
        NOCREATEROLE NOREPLICATION;

        GRANT ALL ON DATABASE ${db_name} TO tenant_access;
    </sql>

在liquibase.properties中我有:

changeLogFile=src/main/resources/db/changelog/db.changelog-master.xml
url=jdbc:postgresql://localhost:5432/postgres
username=postgres
password=mysecretpassword
parameter.db_name=postgres

当我运行mvn liquibase:update时,出现错误:

[ERROR] Change Set src/main/resources/db/changelog/changelog-1-1-create-group-role-tenant-access.xml::create_tenant_access_group_role::failed.  
Error: ERROR: syntax error at or near "$"
你可以让我知道可能出现什么问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您需要在property文件中包含您的媒体资源,那么它应该是parameter.db_name=postgres,而不是parameters.db_name=postgres

您可以尝试将properties移至changelog文件,移至<property>标记。 以下是liquibase docs

以下是这些文档中的示例。

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

    <property name="clob.type" value="clob" dbms="oracle"/>
    <property name="clob.type" value="longtext" dbms="mysql"/>

    <changeSet id="1" author="joe">
         <createTable tableName="${table.name}">
             <column name="id" type="int"/>
             <column name="${column1.name}" type="${clob.type}"/>
             <column name="${column2.name}" type="int"/>
         </createTable>
    </changeSet>
</databaseChangeLog>

答案 1 :(得分:0)

我不知道为什么,但如果我在我的application.properties中指定:liquibase.parameters.db_name:postgres,这是有效的。