Неверные данные XML и ошибка Oracle 1407. Невозможно обновить идентификатор до нуля, когда он не пытается обновить идентификатор - PullRequest
1 голос
/ 12 ноября 2010

У меня сервер Oracle работает на Linux. Когда конкретный оператор Update выполняется внутри sproc, я получаю ошибку ORA-1407, и недопустимые данные записываются в поле XmlType. Sproc пытается обновить Xml, но не пытается обновить идентификатор. Итак, сделанный звонок выглядит так:

UPDATE my_table SET x = foo, y = bar, my_xml = xmldata where the_field = my_field
  returning id into l_id

В этот момент Oracle возвращает «ORA-01407: невозможно обновить идентификатор до NULL», и поле my_xml теперь содержит поврежденные данные.

Если я сделаю это несколько раз, процесс Oracle в конечном итоге умрет в казалось бы случайных местах с ошибкой «ORA-00603: Сеанс сервера ORACLE завершен из-за фатальной ошибки».

Вы видели что-нибудь подобное? Любые советы о том, какие шаги я могу предпринять для устранения неполадок?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2010

Возможная причина в том, что если условие UPDATE возвращает 0, тогда id будет нулевым.

Трудно сказать без каких-либо данных.Вы можете попробовать с небольшим набором ваших данных и посмотреть, где они ломаются.

0 голосов
/ 13 ноября 2010

Может показаться глупым, но имеет ли запись отличное от NULL значение в id для начала.

Возможно иметь ограничение, которое включено, но не проверено, поэтому существующие данные могут нарушать ограничение. Возможно, обновление выдвигает ограничение, которое будет применено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...