liquibase.exception.DatabaseException:ORA-00911:无效字符[Failed SQL:drop table $ Y_USER_NAME}

时间:2017-10-09 12:30:00

标签: database liquibase

我尝试通过liquibase运行sql脚本,我像这样设置了一个属性MY_USER_NAME

${MY_USER_NAME}

,但是当我因为某种原因运行liquibase而尝试在我的sql文件中使用它时,正在删除左括号,所以不是评估我的属性,而是结束$ Y_USER_NAME}

我有我的主变更日志文件master.xml

<?xml version="1.0" encoding="UTF-8"?>
  <databaseChangeLog
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">

  <include relativeToChangelogFile="true" file="changelogs.xml"/>

我的changelogs.xml是

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">

<property name="MY_USER_NAME" value="LALA"/>
<include relativeToChangelogFile="true" file="TEST.sql"/>


</databaseChangeLog>

TEST.sql

drop table ${MY_USER_NAME};

1 个答案:

答案 0 :(得分:0)

我找到了解决我的问题的方法,为了在sql文件中评估属性,sql应该不包含在内。

所以改为

<include relativeToChangelogFile="true" file="TEST.sql"/>

应该使用

<changeSet author="xxx" id="my changeSet" >
<sqlFile  relativeToChangelogFile="true" encoding="utf8" path="TEST.sql"/>
</changeSet>