Liquibase:如何在使用diffchangelog时跳过origin数据库中的表

时间:2015-01-22 20:31:52

标签: informix liquibase

我正在尝试将Liquibase diffChangeLog与Informix一起使用,并且在具有保留字“max”作为列名的表上失败。我试着用:

--excludeObjects="table:informix.edidef_element"

但从原始数据库获取基础数据时似乎并不值得尊敬。 (注意:我还发现--excludeObjects参数仅在命令的diffChangeLog部分之后才能工作/识别。)

我得到的错误是:

DEBUG 1/22/15 3:05 PM:liquibase:使用SQL检查edidef_element.edi是否自动增加:'从informix.edidef_element中选择最大值,其中0 = 1' 运行Liquibase时出现意外错误:liquibase.exception.DatabaseException:java.sql.SQLException:发生语法错误。

如果我将select命令剪切并粘贴到dbaccess中,我会得到同样的错误。现在我只想跳过那个表,直到我有机会修复列名。

这是我的命令脚本:

#!/bin/sh
database="edi"

exclude="table:edidat_location,table:informix.edidef_element,column:max,(i?)edidef_element"

./liquibase  --logLevel=debug --defaultSchemaName="informix"  --diffTypes="tables,columns"  \
--driver=com.informix.jdbc.IfxDriver  \
--url="jdbc:informix-sqli://stmst3.test.trnswrks.com:56670:informixserver=stmst3;database=${database}" --username=khhis  --password="hidden" \
diffChangeLog \
--excludeObjects=${exclude} \
--referenceDefaultSchemaName="informix" \
--referenceUrl="jdbc:informix-sqli://stmsq3.qa.trnswrks.com:56070:informixserver=stmsq3;database=${database}" --referenceUsername=khhis  --referencePassword="hidden"

如果我不能让Liquibase跳过表,有没有办法强制生成的选择包含表名?如果选择的形式是“从informix.edidef_element中选择edidef_element.max,其中0 = 1”,那么它将起作用。


我使用的是版本3.3.2
./liquibase --version
 Liquibase版本:3.3.2

0 个答案:

没有答案