我尝试通过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};
答案 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>