2015-03-30 92 views
0

所以我有一个Oracle数据库,我在liquibase中更新...在测试我的数据库构建系统的过程中,我创建了一个新的更改,其内容与旧更改一个不同的ID。两者都使用SQL添加具有相同名称的列。我希望第二个失败,因为它试图创建一个已经存在一列,但liquibase命令updateTestingRollback报道:Liquibase重复changeSet没有按预期失败

Liquibase 'updateTestingRollback' Successful 

任何想法的潜在原因可能是什么?

<changeSet id="2" author="anonymous" failOnError="true"> 
    <sql>ALTER TABLE person ADD (col_a VARCHAR(1));</sql> 
    <rollback>ALTER TABLE person DROP COLUMN col_a;</rollback> 
</changeSet> 
<changeSet id="3" author="anonymous" failOnError="true"> 
    <sql>ALTER TABLE person ADD (col_a VARCHAR(1));</sql> 
    <rollback>ALTER TABLE person DROP COLUMN col_a;</rollback> 
</changeSet> 

回答

0

你可以尝试用--logLevel=debug标志运行添加以确保,但我的猜测是应用第二更改SQL时Oracle不返回错误代码。如果使用<sql>标签而不是更具体的更改类型标签(即<addColumn>标签),则liquibase在检测问题时会遇到更困难的时间。