对于我们的应用程序,我们需要在命令行(手动生产)和运行应用程序启动时自动运行数据库迁移(测试环境等)。
问题在于Liquibase将整个文件名视为changeSet标识的一部分,因此如果路径不同,它会尝试重新应用更改集。例如,如果是“完全限定路径”VS“相对路径”到db-changelog文件。
如何禁用FILENAME列检查?
答案 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)