我有更改日志:
<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 "$"
你可以让我知道可能出现什么问题吗?
谢谢!
答案 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,这是有效的。