powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Error -625 Constraint name constraint-name already exists.
11 сообщений из 11, страница 1 из 1
Error -625 Constraint name constraint-name already exists.
    #38558894
Всем доброго. При импорте бэкапов в информиксе (10 и 11 версий) в чистую БД иногда возникает такая ошибка:
Constraint name constraint-name already exists.
поиски в гугле дали кое-то : https://groups.google.com/forum/#!topic/ukr.comp.dbms.informix/66-Na5RZXRM
авторОдин из известных багов - Informix 'забывает' имена NOT NULL
констрайнтов (ну не может разобраться где пользовательские,
а где его собственные). В результате в *.sql файл попадают
имена придуманные сервером. А так как при импорте он придумывает
имена используя тот же алгоритм, то велика вероятность ошибки
"-625 Constraint name <name> already exists".

Вопрос: Кто с таким сталкивался и каким образом решал эту проблему?
И вообще так ли это или нет? Может это не совсем верный ответ, или просто ИМХО.
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38558920
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталий Белик,

Те констрейнты, которые INFORMIX создает сам при CREATE TABLE, имеют имена - n"tabid"_"constrid" и в файл .sql при dbexport не попадают.
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38558968
Ikir,
э-э-эм... А это тогда что?:
Код: sql
1.
2.
3.
create table "informix".indicator 
  (
    id serial not null constraint "informix".n101_5,


Это из SQL выгруженного dbexport-ом.
Если там такого быть не должно, значит информикс настроен некорректно?
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38559130
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Виталий БеликОдин из известных багов - Informix 'забывает' имена NOT NULL констрайнтов
Если Вы встретились с таким багом, смело открывайте PMR в IBM при наличии техподдержки.
Багов было много, но с таким я не встречался еще.

Виталий БеликВопрос: Кто с таким сталкивался и каким образом решал эту проблему?
И вообще так ли это или нет?
Проблему можно решить путем предварительного редактирования sql-скрипта загрузки, убрать все названия констрайнтов (sed/awk Вам в помощь). Или наоборот, добавить названия констрайнтов, если они отсутствуют (это сложнее).
Чтобы не терять время, можно продолжить загрузку с момента останова, используя тот же самый sql-скрипт загрузки, исправив ошибочный SQL-оператор, и выполнив следующие за ним команды через dbaccess или sqlcmd или любой другой SQL-tools.
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38559177
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IkirВиталий Белик,

Те констрейнты, которые INFORMIX создает сам при CREATE TABLE, имеют имена - n"tabid"_"constrid" и в файл .sql при dbexport не попадают.
Если принудительно создать констрейнт формата n"x"_"y" для какой-то таблицы, и в БД при загрузке появится констрейнт без явного имени для tabid=x и constrid=y, получим конфликт, потому что informix не заморачивается с проверкой существования n"x"_"y" при генерации. Вероятность проблем повышается, если в БД много констрейнтов с явно заданными именами такого формата.
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38559179
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
victor16Виталий БеликВопрос: Кто с таким сталкивался и каким образом решал эту проблему?
И вообще так ли это или нет?
Проблему можно решить путем предварительного редактирования sql-скрипта загрузки, убрать все названия констрайнтов (sed/awk Вам в помощь). Или наоборот, добавить названия констрайнтов, если они отсутствуют (это сложнее).
Чтобы не терять время, можно продолжить загрузку с момента останова, используя тот же самый sql-скрипт загрузки, исправив ошибочный SQL-оператор, и выполнив следующие за ним команды через dbaccess или sqlcmd или любой другой SQL-tools.
Ещё вариант: перед загрузкой все найденные имена констрейнтов по шаблону n"x"_"y" поменять на другие.
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38559492
АнатоЛой, т.е. проблема эта средствами информикса не решима?
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38559660
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталий БеликIkir,
э-э-эм... А это тогда что?:
Код: sql
1.
2.
3.
create table "informix".indicator 
  (
    id serial not null constraint "informix".n101_5,


Это из SQL выгруженного dbexport-ом.
Если там такого быть не должно, значит информикс настроен некорректно?

Это не Информикс настроен некорректно, это кто-то ручками( либо каким-нибудь продвинутым средством) сгенерил такой CREATE и Информикс не имеет права игнорировать ваше желание обозвать так констрейнт.
Если бы вы написали
Код: sql
1.
2.
3.
create table "informix".indicator 
  (
    id serial not null ,



что суть одно и то же, то констрейнта n101_5 в .sql файле не нашли бы.
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38562103
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталий БеликАнатоЛой, т.е. проблема эта средствами информикса не решима?
Утверждать "100% нет" - не буду.
Но вы избавляетесь от проблемы после первой чистки имен констрейнтов, если после этого опять не нагенерите имен с "nx_y"...
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38562201
авторэто кто-то ручками( либо каким-нибудь продвинутым средством) сгенерил такой CREATE
О боги! Да кто же в здравом рассудке на такое способен? С какой целью вообще такое понадобилось делать? (имею ввиду такие имена).

Ладно, я понял как решать эту проблему. Буду убирать имена констрейнтов, но вот еще вопрос: Если я убираю имена, информикс все равно генерирует при импорте их. Значит что они описаны не только в SQL, а и где-то еще? Так вот где? Ради интереса я поубирал имена везде на маленькой базе в выгруженном SQL. Базу дропнул и заново залил - имена какие были такие и появились, не смотря на то что в SQL я их удалил. Как так? Если они нагенерены ручками, то где-то получается в экспортированных файлах они кроме SQL скрипта сидят?
...
Рейтинг: 0 / 0
Error -625 Constraint name constraint-name already exists.
    #38562336
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталий Белик, что значит "появились"? Появились в sql-скрипте после повторного экспортирования БД?
И ещё,
1) какие точные версии Игформикса?
2) какие типы логирования БД создаёте? Логируемая, нелогируемая, ANSI?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Error -625 Constraint name constraint-name already exists.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]