2014-12-02 31 views
0

我在我的java應用程序中使用IBM DB2和Hibernate。 Whwnever我結束了我的應用程序的DataAccessException我得到一個堆棧跟蹤像如下需要關於IBM DB2錯誤令牌的詳細信息,同時通過休眠獲取DataAccessException

DataAccessException: {}com.ibm.websphere.ce.cm.DuplicateKeyException: [jcc][50053][12311][3.65.102] T2zOS exception: [jcc][T2zos]T2zosPreparedStatement.readExecuteInternal:nativeExecute:9943: DB2 engine SQL error, SQLCODE = -803, SQLSTATE = 23505, error tokens = IX6040UC;000001136E ERRORCODE=-803, SQLSTATE=23505 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:80) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:540) 

我能弄明白的,幾乎所有的堆棧跟蹤的項目,但在錯誤此000001136E tokens.What做它意味着什麼?

回答

0

manual contains this explanation for SQLCODE -803

當插入或更新值是無效的,因爲索引 空間空間indexspace名指數限制了表的列所以沒有兩行 可以包含重複值的列。現有行RID是 X 記錄ID

您在錯誤消息映射到錯誤的解釋變量中看到的標記:「IX6040UC」是索引空間名稱,而「000001136E」是現有記錄的RID(記錄標識)的十六進制表示,該記錄已具有您嘗試插入或更新的值。

我沒有一個系統進行測試,但你可以嘗試這樣的查詢,以獲取現有的記錄:

select * from yourtable where RID(yourtable) = 70510 

70510是十六進制的十進制表示RID 0x1136E。

+0

感謝有關行ID的信息。但查詢沒有返回任何行。可能是RID是一旦一行被刪除或插入到DB中會變化的東西? – gowthamvelusamy 2014-12-03 09:41:46

相關問題