我有一个变更集:
<?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-2.0.xsd">
<changeSet id="1359722450-38" author="myname" runOnChange="true" >
<sqlFile endDelimiter="" splitStatements="false" path="sql/38_getLeadSet.sql" relativeToChangelogFile="true" />
<rollback>DROP FUNCTION `getLeadSet`</rollback>
</changeSet>
</databaseChangeLog>
包含在主日志文件中
我如果在 sql/38_getLeadSet.sql 中更改某事并运行 liquibase update ,我得到:
FUNCTION getLeadSet already exists liquibase.exception.DatabaseException: Error executing SQL ... getLeadSet....
在命令行上。似乎与此处提到的问题相同,但我有最新的 liquibase 版本
任何形式的建议表示赞赏,谢谢
编辑
好吧,我们需要在 sql 文件标记之前删除 sql,例如
<sql>DROP FUNCTION if exists `getLeadSet`</sql>
<sqlFile endDelimiter="" splitStatements="false" path="sql/38_getLeadSet.sql" relativeToChangelogFile="true" />
<rollback>DROP FUNCTION `getLeadSet`</rollback>
PS)Liquibase 版本:2.0.5