09.12.2010 20:39, Vlad Khorsun пишет:
"Андрей Кручинин" ...
Задам тут 2 вопроса. Потому как после первой проблемы возникла вторая...

1. Все началось с того что в базу перестали записываться данные.
Данные это тупо одно текстовое поле и один маленько-большой БЛОБ (от 1
кб до 3 Мб обычно). Просто ТУПО перестали записываться данные.
Программа которая все это дело писала прекрасно жила на птице 2.1,
неделю назад поставил 2.5 и на тебе...

А она не давала (ТУПО) каких-нибудь ошибок ? Или может она их ТУПО
глотает ?
И как вообще обнаружилась проблема ?

Да фиг их знает :-) но ТУПО ошибок не было :-)

А если серьезно я сел за комп и посмотрел загрузку (там письма в базу грузятся), заметил что письма из папки исчезают, а в базе не появляются. Ногами не пинать, но дело было в начале часа пик и самое важное было не нахождение ошибки, а восстановление работоспособности :-(


Ну ладно, далее интереснее - стандартное решение проблемы b/r, тем
более что незаписанные данные есть в копиях. И тут начинаются веселости:

2. Бэкап прошел без проблем, стандартно как всегда. Делаем рестор - опа:

gbak: restoring privilege for user SYSDBA
gbak: restoring SQL role: RDB$ADMIN
IBE: Invalid insert or update value(s): object columns are constrained
- no 2 table rows can have duplicate column values.
attempt to store duplicate value (visible to active transactions) in
unique index "RDB$INDEX_39".

Что? Откуда? Я совсем НЕ понимаю. База переводилась под 2.5 через b/r,
все прошло штатно и нормально. Во время переноса проблем НЕ
наблюдалось. И тут на тебе....

Еще раз конфигурация: Windows XP Home, FireBird 2.5.0.26074

gbak от 2.1 ? Ибо в бекапе не должно быть роли RDB$ADMIN.
И проверь - в БД эта роль системная или нет ?

Нет, 2.1 был полностью снесен однозначно. RDB$ADMIN -> владелец SYSDBA. После того как база не восстановилась до конца, я ее через embedded прогнал через b/r. если что не так делал - каюсь. Но время было совсем того, мало.


--
Хорсун Влад




--
Андрей Кручинин
www.med-zakaz.ru
Для особо извращенных - http://мед-заказ.рф :-)

Ответить