Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
В общем есть программа на C#, работающая с Oracle, которая осуществляет импорт данных из Access в Oracle. При работе программы возникает ошибка нарушения уникальности (unique constraint violated) и происходит откат транзакции.
Ошибка возникает при insert'е, при этом значения, которые вставляются в таблицу правильные (повторения индексов нет).
Insert'ов в программе несколько, иногда проходит всё нормально, а иногда ошибка.

Самое непонятное:
Например, произвожу импорт каких-то данных из одной базы Access в Oracle. Возникает ошибка, происходит откат транзакции.
Запускаю импорт второй раз. Oracle ругается на другой insert. Транзакция также откатывается.
Запускаю в третий раз. Ошибок уже нет. Всё проходит успешно.
При этом, при импорте разных баз access ошибки нарушения уникальности появляются на разных insert'ах и при повторных импортах исчезают.

В работе с ораклом новичок. Надеюсь, что всё понятно объяснил. В чем может быть причина этих ошибок?
5 июл 12, 11:44    [12820917]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
AmKad
Member

Откуда:
Сообщений: 5222
tdn91,

А ты не хочешь рассказать как ты делаешь импорт из Access?
5 июл 12, 11:50    [12820960]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
Если данные вливаете из акцеса через ODBC, там галка есть автокоммит on. Поэтому такое поведения вполне закономерно.
5 июл 12, 11:52    [12820984]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
AmKad
tdn91,

А ты не хочешь рассказать как ты делаешь импорт из Access?


Может, не так выразился.
Беру данные из таблиц Access, которые удовлетворяют определенным условиям, переношу эти данные в одноименные таблицы в Oracle.
5 июл 12, 11:56    [12821005]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
semenar
Если данные вливаете из акцеса через ODBC, там галка есть автокоммит on. Поэтому такое поведения вполне закономерно.


Не совсем понял, что вы имеете в виду. Что именно закономерно?
Для меня непонятно, почему при insert'e в оракл при первом запуске возникает, а при втором уже нет, учитывая что данные при каждом запуске одни и те же.
5 июл 12, 11:59    [12821051]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
tdn91
semenar
Если данные вливаете из акцеса через ODBC, там галка есть автокоммит on. Поэтому такое поведения вполне закономерно.


Не совсем понял, что вы имеете в виду. Что именно закономерно?
Для меня непонятно, почему при insert'e в оракл при первом запуске возникает, а при втором уже нет, учитывая что данные при каждом запуске одни и те же.


Опечатка, непонятно почему при insert возникает ошибка
5 июл 12, 12:01    [12821077]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
tdn91
semenar
Если данные вливаете из акцеса через ODBC, там галка есть автокоммит on. Поэтому такое поведения вполне закономерно.


Не совсем понял, что вы имеете в виду. Что именно закономерно?
Для меня непонятно, почему при insert'e в оракл при первом запуске возникает, а при втором уже нет, учитывая что данные при каждом запуске одни и те же.

Судя по первому посту-при втором запуске ошибки возникают.
5 июл 12, 12:04    [12821099]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
semenar
tdn91
пропущено...


Не совсем понял, что вы имеете в виду. Что именно закономерно?
Для меня непонятно, почему при insert'e в оракл при первом запуске возникает, а при втором уже нет, учитывая что данные при каждом запуске одни и те же.

Судя по первому посту-при втором запуске ошибки возникают.


Ошибка может возникнуть и при втором запуске, и при третьем, и т.д., а может вообще не возникнуть ни разу.
Всё зависит от того, из какой базы access данные переносятся в oracle.
5 июл 12, 12:09    [12821144]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
tdn91, тогда рассказывайте как вливаете данные(ODBC,OO4O например). И анализируйте входные данные, может в акцесе поле неунекальное, если ошибка плавающая.
5 июл 12, 12:16    [12821217]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
tdn91,

поищите над (теми) оракловыми таблицами строчные триггеры, которые при вставке дёргают последовательности.
и изучите те последовательности в смысле соотношения их текущего значения и макс. значений соотв. ключевых полей в таблицах
5 июл 12, 12:22    [12821279]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
Изначально программу писал не я. Для доступа к Oracle используется библиотека MsOraLibrary (скорее всего самописная). Если нужно, могу предоставить исходник .cs.

Уточню по данным:
Из аксесса, например, считываю select'ом данные из одной таблицы:
'select id, поле1, поле2 from objects where условие'
В оракле делаю insert:
'insert into sm.objects (id,поле1,поле2) values (seqobjects.nextval,поле1,поле2)'.
То есть, поле id никак не может быть неуникальным.
5 июл 12, 12:33    [12821377]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51775

tdn91
То есть, поле id никак не может быть неуникальным.

А ты уверен, что нарушается уникальность именно поля id?..

Posted via ActualForum NNTP Server 1.5

5 июл 12, 12:41    [12821464]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
Dimitry Sibiryakov
tdn91
То есть, поле id никак не может быть неуникальным.

А ты уверен, что нарушается уникальность именно поля id?..


Да, уверен. В этой таблице есть поле, ссылающееся на другую таблицу, но значение этого поля всегда берется корректно.
5 июл 12, 12:48    [12821536]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51775

tdn91
Да, уверен.

Ты прочитал название ограничения в сообщении об ошибке и посмотрел на какие поля оно
наложено?..

Posted via ActualForum NNTP Server 1.5

5 июл 12, 12:50    [12821568]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
tdn91
Member

Откуда:
Сообщений: 8
orawish
tdn91,

и изучите те последовательности в смысле соотношения их текущего значения и макс. значений соотв. ключевых полей в таблицах


Наверно это не то, т.к. при последующих запусках программы значение последовательности увеличивается, но всё проходит успешно.
Или я чего-то не так понял . . .
5 июл 12, 12:51    [12821577]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка unique constraint violated  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
tdn91
orawish
tdn91,

и изучите те последовательности в смысле соотношения их текущего значения и макс. значений соотв. ключевых полей в таблицах


Наверно это не то, т.к. при последующих запусках программы значение последовательности увеличивается, но всё проходит успешно.
Или я чего-то не так понял . . .

имхо, не поняли.
если последовательность отстала от максимального значения в таблице на 150 значений,
то первая и вторая попытка вставить по 100 записей сорвутся, а третья выполнится
5 июл 12, 13:47    [12822007]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить