liquibase包含文件和dbDoc或更新失败

时间:2013-02-04 13:25:53

标签: migration database-migration liquibase

我有迁移的目录结构如下:

DB1:

  • 最新/(触发器,功能,程序)
  • 表/
  • V000 / master.xml
  • update.xml

DB1 / update.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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">

    <include   file="v000/master.xml" relativeToChangelogFile="true"/>

</databaseChangeLog>

db2 :(尝试包含db1 / update.xml)架构,因为我需要扩展/添加到db1架构)

  • update.xml

DB2 / update.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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">


    <include   file="../db1/update.xml" />

</databaseChangeLog>

DB1&GT; liquibase --changeLogFile = update.xml更新,成功

但是

db2&gt; liquibase --changeLogFile = update.xml validate

显示db1 / v000 / master.xml

中包含的表的验证错误
<include file="tables/12_createTable_audiences.xml" />

Error Reading Migration File:tables/12_createTable_audiences.xml .....

如果我通过跟踪更改来修复错误(对于每个表:在db1 / v000 / mater.xml中)

 <include file="../tables/12_createTable_audiences.xml" relativeToChangelogFile="true"/>

db2&gt; liquibase --changeLogFile = update.xml验证/更新正常工作

但是

db2&gt; liquibase --changeLogFile = update.xml dbDocs~ / docs / db1

表12_createTable_audiences.xml

失败

有没有人知道如何解决这些问题(路径问题)?为什么update和dbDoc命令对于相同的路径行为不同?

感谢您的支持。

1 个答案:

答案 0 :(得分:0)

尝试从根目录中指定包含文件中的路径,而不是使用relativeToChangelogFile属性。像

这样的东西
<iuclude file = "./Update/db1/update.xml" />