Liquibase:如何禁用FILENAME列检查?

时间:2013-11-13 16:55:23

标签: liquibase

对于我们的应用程序,我们需要在命令行(手动生产)和运行应用程序启动时自动运行数据库迁移(测试环境等)。

问题在于Liquibase将整个文件名视为changeSet标识的一部分,因此如果路径不同,它会尝试重新应用更改集。例如,如果是“完全限定路径”VS“相对路径”到db-changelog文件。

如何禁用FILENAME列检查?

2 个答案:

答案 0 :(得分:12)

基于this,方法如下:

始终在databaseChangeLog元素和每个changeSet元素上使用logicalFilePath属性。

示例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog logicalFilePath="does-not-matter" 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 logicalFilePath="path-independent" author="authorId" id="1">
        ...
    </changeSet>

</databaseChangeLog>

结果,所有变更集的FILENAME列将包含“路径无关”,并且将省略检查。

答案 1 :(得分:3)

@ snowindy的回答很好。或者,您始终可以以类路径相对的方式引用changeLog,例如com / example / changelog.xml。如果在两个环境中正确配置类路径,则可以使用相同的“com / example / changelog.xml”。