liquibase.exception.DatabaseException: ORA-00911: 无效字符 [失败 SQL: 删除 table $Y_USER_NAME}

liquibase.exception.DatabaseException: ORA-00911: invalid character [Failed SQL: drop table $Y_USER_NAME}

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

${MY_USER_NAME}

,但是当我尝试在我的 sql 文件中使用它时,当我 运行 liquibase 由于某种原因左括号被删除时,而不是评估我的 属性 它最终 $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};

我找到了我的问题的解决方案,以便在 sql 文件 sql 中评估的属性应该被包装而不包括在内。

所以

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

这个应该用

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