2011-03-15 4 views
3

은 내가 stmt.executeBatch() 문에서이 된, BatchUpdateException을 받고 있어요 :BatchUpdateException은 무엇을 의미합니까?

BatchUpdateException: A resultset was created for update 

인터넷을이 예외 메시지에 대한 정보가 없습니다. 무슨 뜻이에요? 역 추적에는 스토어드 프로 시저가 실패한 것 이외에는 유용한 것이 없습니다.

답변

8

이 나는 ​​일반 INSERT, UPDATE 또는 DELETE 문이 아니다 즉, 당신이 addBatch()를 통해 추가 SQL 문이 ResultSet를 생산하고 의미와 메시지를 해석하는 것입니다.

결과를 리턴해야하는 명령문은 JDBC와 함께 일괄 처리로 실행할 수 없습니다.

JDBC Tutorial (제목 "일괄 업데이트 예외 처리"에서) 그것을 확인 :

당신은 당신이 executeBatch 메소드를 호출 할 때 않고 BatchUpdateException을받을 경우 당신이 추가 된 SQL 문 (1) 하나 일괄 처리 결과 세트 (일반적으로 쿼리)를 생성하거나 (2) 일괄 처리의 SQL 문 중 하나가 다른 이유로 성공적으로 실행되지 않습니다.

당신은 여기 경우 1로 실행 것으로 보인다.

+0

뛰어난 탐정 일을 해결있어 명령! –

1

배치 업데이트는 여러 개의 삽입/업데이트/삭제 문으로 데이터베이스에서 함께 처리됩니다. 이는 보통 성능상의 이유로 수행됩니다. 1x 1000 인서트는 1000x 1 인서트보다 훨씬 빠릅니다. BatchUpdateException은 제약 조건 위반으로 인해 1 개 (또는 그 이상)의 명령문이 가장 자주 실패했음을 의미합니다. 저장 프로 시저가 무엇을했는지 보려면 저장 프로 시저를 살펴 봐야합니다. Mayby 귀하 dba가 잘못 된 것에 대한 자세한 정보를 제공 할 수 있습니다.

+0

이것이 BatchUpdateException의 이유 중 하나입니다. 그는 다른 하나를보고있는 것 같습니다 (내 답변 참조). –

0

테이블에서 한 열을 삭제했습니다. 테이블에 레코드를 삽입하려고하면 BatchUpdateException이 발생합니다.

실행 한 후 아래의 문제가

REORG의 표 TABLE_NAME

+0

이 질문은 실제로 다음과 같이 질문하지 않습니다. _ "BatchUpdateException은 무엇을 의미합니까?"_ – benka