Oracle 데이터베이스를 사용하고 있습니다. 우리는 우리의 서비스에 대한 호출에 자주 실패하고 있습니다. 테이블에서 예외가 발생하는 것을보고 로그를 볼 때제약 조건 위반 예외 ORA-00001
java.sql.BatchUpdateException : ORA-00001 : 고유 제한 조건 (DBSCHEMA.IDX_CO_DETAILS)이 위반되었습니다.
색인 이름 DBSCHEMA.IDX_CO_DETAILS에 대한 색인을 점검했습니다.
열 (INCLUDE_COLUMN이 null 임)을 포함하지 않았습니다. 이 제약 조건이 무엇인지 어떻게 알 수 있습니까? 기본 키 제약 조건입니까?
우리는 ORM을 위해 최대 절전 모드를 사용하고 있습니다. 다음은 최대 절전 모드 컨텍스트
Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
두 쿼리를 모두 실행했습니다. 나는 행을 반환하지 않았으므로 소유자를 제거했습니다. 제약 조건에는 IDX_CO_DETAILS라는 이름이 없으며 고유 키 제약 조건이 없습니다. 오라클이 기본 키로 생성 한 인덱스 제약이 될 수 있습니까? – Poorna
@Shishir, 나는 나의 대답을 더 많은 정보로 업데이트했다. – Ben
예 all_indexes 테이블에 있습니다. 하지만 dbms_metadata에 대한 마지막 쿼리를 실행할 때 개체를 찾을 수 없습니다. 오류가 발생했습니다. 테이블 메타 데이터를 가져 오는 또 다른 내부 도구가 있습니다. IDX_CO_DETAILS는 세 개의 컬럼을 기반으로합니다. 따라서 색인을 생성하는 동안 실패해야합니다. 그렇다면 테이블 자체보다는 인덱스에 제약 조건을 추가하는 것이 합리적입니까? 이 경우 JDBC 일괄 업데이트 예외가 발생합니다. 인덱스보다는 테이블에 제약이 있다면이를 피할 수 있었습니까? – Poorna