2014-10-09 271 views
0

我收到此錯誤運行插入查詢單條記錄:從Java解密DB2 -302錯誤的最佳方式是什麼?

DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=3.62.56

Exception: org.springframework.dao.DataIntegrityViolationException

我看這件事在IBM的幫助下網站,但那裏是沒有的參數指標,我堅持。 SQL狀態似乎也指定它不是一個值太大。

使用Spring的JdbcTemplate.update(String sql, Object... params)查詢的格式爲INSERT INTO [[TABLE_NAME]] VALUES (?,?,?,...)

這是工作,我不能發佈模式或查詢。我正在尋找一般的建議來調試這個問題。我已經知道使用Arrays.toString(Object[])不會以SQL格式打印出來。

回答

0

要查找手冊中SQLCODE -302的解釋,您需要搜索SQL0302N(DB2 SQLCODE值的一般規則如下:「SQL」加四位數字,必要時填充左邊的零,再加上「 N「表示」否定「,因爲-302是負數)。

如果已安裝的DB2命令行處理器,你也可以用它來查找錯誤代碼:

db2 ? sql302 

這會產生這樣的:

SQL0302N The value of a host variable in the EXECUTE or OPEN statement is out of range for its corresponding use.

Explanation:

The value of an input host variable was found to be out of range for its use in the SELECT, VALUES, or prepared statement.

換句話說,您的INSERT中的一個綁定變量對於目標列來說太大。您需要將表列定義與您嘗試插入的實際值進行比較。

0

除了mustaccio的回答,您還可以從SYSPROC.SQLERRM獲取來自sql的信息。例如:

values SYSPROC.SQLERRM ('SQL302', '', '', 'en_US', 0) 

SQL0302N The value of a host variable in the EXECUTE or OPEN statement 
    is out of range for its corresponding use. 

Explanation: 
... 
相關問題