-2
什麼是非原子批量德比故障更新通過stmt.executeBatch()
?德比更新中非原子批量故障
對不起。但是我得到了錯誤:我編寫了這樣的代碼:stmt.executeBatch(query);
。其實stmt.executeBatch();
是正確的。
在另一個代碼中,我設置了setAutoCommit(false)
並忘記了它setAutoCommit(true)
當我糾正這兩個時,消息消失。
什麼是非原子批量德比故障更新通過stmt.executeBatch()
?德比更新中非原子批量故障
對不起。但是我得到了錯誤:我編寫了這樣的代碼:stmt.executeBatch(query);
。其實stmt.executeBatch();
是正確的。
在另一個代碼中,我設置了setAutoCommit(false)
並忘記了它setAutoCommit(true)
當我糾正這兩個時,消息消失。
這意味着在「非原子批次」中出現「出錯」。 「非原子批處理」位表示(我認爲)該批處理涉及多個事務,並且無法全部回滾。
完整的異常消息極有可能是這樣的:
Exception in thread "main" org.apache.derby.client.am.BatchUpdateException:
Non-atomic batch failure. The batch was submitted, but at least one
exception occurred on an individual member of the batch. Use getNextException()
to retrieve the exceptions for specific batched elements.
at org.apache.derby.client.am.Agent.endBatchedReadChain(Agent.java:267)
at org.apache.derby.client.am.PreparedStatement.executeBatchRequestX(PreparedStatement.java:1596)
at org.apache.derby.client.am.PreparedStatement.executeBatchX(PreparedStatement.java:1467)
at org.apache.derby.client.am.PreparedStatement.executeBatch(PreparedStatement.java:945)
at AOIB.main(AOIB.java:24)
它說,(實際上)「一個或多個批次中失敗的操作,我不能告訴你哪個,但你可以致電getNextException()
查詢。「
這意味着「出了問題」我知道。但爲什麼會發生這種情況? – 2013-04-29 11:15:23
@PranjalCholadhara - 我們不能告訴你,因爲異常消息沒有說。你需要調用'getNextException()'並打印它以發現......就像消息告訴你的那樣。 – 2013-04-29 11:22:38
有關解釋異常的更多幫助:http://wiki.apache.org/db-derby/UnwindExceptionChain – 2013-04-29 18:57:30