Я использую базу данных Oracle. Мы наблюдаем частые сбои в звонках на наш сервис. Когда я смотрел журналы, я вижу следующие исключения в таблицеИсключение нарушения ограничений ORA-00001
java.sql.BatchUpdateException: ORA-00001: уникальное ограничение (DBSCHEMA.IDX_CO_DETAILS) нарушено.
Я проверил индекс в таблице для имени индекса DBSCHEMA.IDX_CO_DETAILS.
В него не входила никакая колонка (INCLUDE_COLUMN - null). Как я могу узнать, для чего это ограничение? Это ограничение первичного ключа?
Мы используем спящий режим для ОРМ. Ниже приводится обратно след в контексте спящего
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 и нет уникальных ограничений ключа. Может ли это ограничение индекса, созданное oracle для первичного ключа? – Poorna
@Shishir, я обновил свой ответ с дополнительной информацией. – Ben
Да, она присутствует в таблице all_indexes. Но когда я запускаю последний запрос для dbms_metadata, я получил объект, который не нашел ошибку. У нас есть еще один внутренний инструмент для получения метаданных таблицы. Установлено, что IDX_CO_DETAILS состоит из трех столбцов. Поэтому при создании индекса он должен быть неудачным. Так что имеет смысл добавить ограничение на индекс, а не на таблицу ?. И в этом случае мы получаем исключение пакетного обновления JDBC. Можно ли этого избежать, если бы у нас было ограничение на таблицу, а не на Индекс? – Poorna