|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
Всем доброго. При импорте бэкапов в информиксе (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". Вопрос: Кто с таким сталкивался и каким образом решал эту проблему? И вообще так ли это или нет? Может это не совсем верный ответ, или просто ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 18:05 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
Виталий Белик, Те констрейнты, которые INFORMIX создает сам при CREATE TABLE, имеют имена - n"tabid"_"constrid" и в файл .sql при dbexport не попадают. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 18:30 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
Ikir, э-э-эм... А это тогда что?: Код: sql 1. 2. 3.
Это из SQL выгруженного dbexport-ом. Если там такого быть не должно, значит информикс настроен некорректно? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 19:28 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
Виталий БеликОдин из известных багов - Informix 'забывает' имена NOT NULL констрайнтов Если Вы встретились с таким багом, смело открывайте PMR в IBM при наличии техподдержки. Багов было много, но с таким я не встречался еще. Виталий БеликВопрос: Кто с таким сталкивался и каким образом решал эту проблему? И вообще так ли это или нет? Проблему можно решить путем предварительного редактирования sql-скрипта загрузки, убрать все названия констрайнтов (sed/awk Вам в помощь). Или наоборот, добавить названия констрайнтов, если они отсутствуют (это сложнее). Чтобы не терять время, можно продолжить загрузку с момента останова, используя тот же самый sql-скрипт загрузки, исправив ошибочный SQL-оператор, и выполнив следующие за ним команды через dbaccess или sqlcmd или любой другой SQL-tools. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 22:55 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
IkirВиталий Белик, Те констрейнты, которые INFORMIX создает сам при CREATE TABLE, имеют имена - n"tabid"_"constrid" и в файл .sql при dbexport не попадают. Если принудительно создать констрейнт формата n"x"_"y" для какой-то таблицы, и в БД при загрузке появится констрейнт без явного имени для tabid=x и constrid=y, получим конфликт, потому что informix не заморачивается с проверкой существования n"x"_"y" при генерации. Вероятность проблем повышается, если в БД много констрейнтов с явно заданными именами такого формата. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 23:54 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
victor16Виталий БеликВопрос: Кто с таким сталкивался и каким образом решал эту проблему? И вообще так ли это или нет? Проблему можно решить путем предварительного редактирования sql-скрипта загрузки, убрать все названия констрайнтов (sed/awk Вам в помощь). Или наоборот, добавить названия констрайнтов, если они отсутствуют (это сложнее). Чтобы не терять время, можно продолжить загрузку с момента останова, используя тот же самый sql-скрипт загрузки, исправив ошибочный SQL-оператор, и выполнив следующие за ним команды через dbaccess или sqlcmd или любой другой SQL-tools. Ещё вариант: перед загрузкой все найденные имена констрейнтов по шаблону n"x"_"y" поменять на другие. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 23:58 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
АнатоЛой, т.е. проблема эта средствами информикса не решима? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 10:53 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
Виталий БеликIkir, э-э-эм... А это тогда что?: Код: sql 1. 2. 3.
Это из SQL выгруженного dbexport-ом. Если там такого быть не должно, значит информикс настроен некорректно? Это не Информикс настроен некорректно, это кто-то ручками( либо каким-нибудь продвинутым средством) сгенерил такой CREATE и Информикс не имеет права игнорировать ваше желание обозвать так констрейнт. Если бы вы написали Код: sql 1. 2. 3.
что суть одно и то же, то констрейнта n101_5 в .sql файле не нашли бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 12:44 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
Виталий БеликАнатоЛой, т.е. проблема эта средствами информикса не решима? Утверждать "100% нет" - не буду. Но вы избавляетесь от проблемы после первой чистки имен констрейнтов, если после этого опять не нагенерите имен с "nx_y"... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2014, 05:16 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
авторэто кто-то ручками( либо каким-нибудь продвинутым средством) сгенерил такой CREATE О боги! Да кто же в здравом рассудке на такое способен? С какой целью вообще такое понадобилось делать? (имею ввиду такие имена). Ладно, я понял как решать эту проблему. Буду убирать имена констрейнтов, но вот еще вопрос: Если я убираю имена, информикс все равно генерирует при импорте их. Значит что они описаны не только в SQL, а и где-то еще? Так вот где? Ради интереса я поубирал имена везде на маленькой базе в выгруженном SQL. Базу дропнул и заново залил - имена какие были такие и появились, не смотря на то что в SQL я их удалил. Как так? Если они нагенерены ручками, то где-то получается в экспортированных файлах они кроме SQL скрипта сидят? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2014, 12:33 |
|
Error -625 Constraint name constraint-name already exists.
|
|||
---|---|---|---|
#18+
Виталий Белик, что значит "появились"? Появились в sql-скрипте после повторного экспортирования БД? И ещё, 1) какие точные версии Игформикса? 2) какие типы логирования БД создаёте? Логируемая, нелогируемая, ANSI? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2014, 17:16 |
|
|
start [/forum/topic.php?fid=44&msg=38558968&tid=1606985]: |
0ms |
get settings: |
26ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
219ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 618ms |
0 / 0 |