[ОТВЕТИТЬ]
06.01.2016 13:22
xray84
 
Доброго времени суток! Нужен хэлп!
На одном магазине при обновлении с версии 1.031.0 СП10 на 1.032.2 СП2 ошибка такая:

***** Operation.sql *****
begin
*
ERROR at line 1:
ORA-20012: Ошибка создания ограничения SMCOperAccountOp_UserOp для
SMOperAccountOp.
ORA-06512: at "SUPERMAG.SMINITNEWCONSTRAINT", line 8
ORA-02298: cannot validate (SUPERMAG.SMCOPERACCOUNTOP_USEROP) - parent keys not
found
ORA-06512: at line 7
06.01.2016 13:24
xray84
 
ошибка на этапе Инициализации базы данных. в этом месте:

....
Модернизация версии 1.032.
PreUpgrade
1.032.1\32_To_32_1_a
06.01.2016 15:11
OlegON
 
Я так полагаю изначально структура кривая, возможно, что не только в этом месте. Откатиться в бекап и проверить ее с шаблоном. Там и вылезет.
06.01.2016 17:30
xray84
 
сравнил с эталоном. один индекс отсутствовал...добавил его..
но остались вот такие несоответствия:

Колонка FFDEBUGLOG.ID вместо размерности 38.0 имеет размерность 22
Колонка SMSTOREORDERSTASKPARAM.ALGMODE вместо размерности 38.0 имеет размерность 22
Колонка SMSTOREORDERSTASKPARAM.IWGENMODE вместо размерности 38.0 имеет размерность 22
Колонка SSEVENTLOG.MSGLINE вместо размерности 38.0 имеет размерность 22
Колонка SSMIGRATORARC.IMPORTEDCOMPS вместо размерности 38.0 имеет размерность 22
Колонка SSMIGRATORLOG.AMOUNT вместо размерности 38.0 имеет размерность 22
Колонка SSMIGRATORLOG.COMPID вместо размерности 38.0 имеет размерность 22
Отсутствует колонка SVJOBS.FNTYPE
Колонка TTARTMATRIX.TYPE вместо размерности 38.0 имеет размерность 22
Колонка TTBILLSBASES.ITEMNO вместо размерности 38.0 имеет размерность 22
Колонка TTDEPOTCELLCAP.NLENGTH вместо размерности 38.0 имеет размерность 22
Колонка TTDEPOTCELLCAP.NLEVELS вместо размерности 38.0 имеет размерность 22
Колонка TTDEPOTCELLCAP.NPACKS вместо размерности 38.0 имеет размерность 22
Колонка TTDEPOTCELLCAP.NWIDTH вместо размерности 38.0 имеет размерность 22
Колонка TTDOCARTICLES.SPECITEM вместо размерности 38.0 имеет размерность 22
Колонка TTREALIZATION3.ID вместо размерности 38.0 имеет размерность 22
Колонка TTSALDOCP.OPTYPE вместо размерности 38.0 имеет размерность 22
Колонка TTSALDOCPPACK.OPTYPE вместо размерности 38.0 имеет размерность 22
Колонка TTTOVREPORTOBOROT.OPTYPE вместо размерности 38.0 имеет размерность 22
Колонка TTTRACEORDER.ID вместо размерности 38.0 имеет размерность 22
Колонка TTTRACEORDER.MSGLINE вместо размерности 38.0 имеет размерность 22

как их побороть?
06.01.2016 18:27
OlegON
 
На размерность можно наплевать - это ты, наверное, разные версии Oracle сравнивал.
Оптимизатор на этой БД работает? (он базу на целостность проверяет)
Посмотри на успешно переведенной БД код создания констрейнта SUPERMAG.SMCOPERACCOUNTOP_USEROP и попробуй применить его на сломанной БД. Ты индекс на этой таблице вкрячил? А то сравнивалка в админмодуле любит констрейнты за индексы выдавать...
06.01.2016 18:27
OlegON
 
На размерность можно наплевать - это ты, наверное, разные версии Oracle сравнивал.
Оптимизатор на этой БД работает? (он базу на целостность проверяет)
Посмотри на успешно переведенной БД код создания констрейнта SUPERMAG.SMCOPERACCOUNTOP_USEROP и попробуй применить его на сломанной БД. Ты индекс на этой таблице вкрячил? А то сравнивалка в админмодуле любит констрейнты за индексы выдавать...
06.01.2016 18:39
xray84
 
Индекс вкорячил на таблицу supermag.ffavgpricelog_ - это в sql navigator посмотрел на успешно обновленной базе.. еще была одна таблица лишняя, я ее drop сделал...
06.01.2016 18:44
OlegON
 
Надеюсь, это не SM%-табличка была, которую дропнул...
06.01.2016 18:50
xray84
 
вот что было в проверке эталона:
Отсутствует INDEX FFAVGPRICELOG_CALCDATE_
Лишний TABLE SMSTORELOCATIONS222
06.01.2016 19:11
xray84
 
код создания констрейнта пробую, ошибка такая же - parent keys not found
06.01.2016 19:18
OlegON
 
покажи код
суть-то проста, в коде (который я на память не помню), есть ограничение, которое не соблюдается в данных сейчас (что-то с пользовательскими операциями), нужно привести данные в соответствие с этим ограничением и запустить инициализацию заново.
06.01.2016 19:27
xray84
 
вот он (в нормально обновленной базе):

alter table SUPERMAG.SMOPERACCOUNTOP
add constraint SMCOPERACCOUNTOP_USEROP foreign key (OPCODE, USEROP)
references SUPERMAG.SMUSEROP (SYSOP, ID) on delete cascade;
06.01.2016 19:44
OlegON
 
Ну вот, ищи, чего нет в SUPERMAG.SMUSEROP, что есть в SUPERMAG.SMOPERACCOUNTOP, ключи тебе дадены.
08.01.2016 15:24
xray84
 
пересоздал полностью SUPERMAG.SMOPERACCOUNTOP. Все получилось.
Опции темы


Часовой пояс GMT +3, время: 20:29.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.