Ошибка параметра журнала изменений Liquibase: ОШИБКА: синтаксическая ошибка в или около "$" - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть список изменений:

   <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 голосов
/ 26 апреля 2018

Я не знаю почему, но если я укажу в своем application.properties: liquibase.parameters.db_name: postgres, это работает.

0 голосов
/ 25 апреля 2018

Если вам нужно, чтобы ваши свойства были в файле property, тогда это должно быть parameter.db_name=postgres, а не parameters.db_name=postgres.

Или вы можете попробовать переместить properties в changelog файл, в тег <property>. Вот документация о жидкостибазе .

Вот пример из этих документов.

<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>
...