2015-05-29 36 views
0

執行liquibase在試圖在liquibase 3.3.3一個PostgreSQL 9.3數據庫上執行diffChangelog(從PowerShell腳本)爲:如何與java.lang.NumberFormatException PostgreSQL的

$_cmd='C:\liquibase-3.3.3-bin\liquibase 
--driver=org.postgresql.Driver 
--url=jdbc:postgresql://localhost:5432/chaos 
--username=postgres --password=Password 
    diffChangelog 
--referenceUrl=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/chaos 
--referenceUsername=postgres --referencePassword=Password > db-changelog.xml'; 

CMD.EXE /c "`"$_cmd`"" 

我得到的錯誤:

*CMD.EXE : Unexpected error running Liquibase: 
liquibase.exception.DatabaseException: java.lang.NumberFormatException: 
For input string: "B'00000000'::"bit""* 

我正在使用Java版本8更新45.(最新版本)。

postgresql-9.4-1201.jdbc4.jar位於C:\ liquibase-3.3.3-bin \ lib \目錄中。

PostgreSQL版本是9.3。

有人知道如何解決這個錯誤或使這項工作?

非常感謝提前!

+0

如果您將'write-host $ _cmd'複製粘貼到cmd提示符中,它是否工作? – vonPryz

+3

您可以添加完整的堆棧跟蹤來查看這是Liquibase問題還是驅動程序問題? –

+0

@vonPryz(不知道如何粘貼到cmd提示符中)write-host的輸出結果給出:與上面的DatabaseException相同的錯誤:java.lang.NumberFormatException:...沒有區別。想法? :-( –

回答

1

感謝a_horse_with_no_name和Radek Postolowicz的 previous question指向我在正確的方向。

qstatus bit(8) DEFAULT B'00000000'::"bit"  <--**HERE IS THE PROBLEM! 

PostgreSQL的數據類型BYTEA正確各方interprested

的問題,即定義的列QSTATUS爲PostgreSQL表被發現。

刪除此列解決了所有問題。

(我)進一步測試表明,與以某種方式鑄造中定義的任何列失敗,liquibase:

例如,

qstatus bit(8) DEFAULT B'00000000'::"bit" 

cmi character varying(1) DEFAULT ' '::bpchar 

希望這有助於。