Ошибка при restore

Ремонт и восстановление баз данных InterBase, Firebird, Yaffil

Модераторы: kdv, Alexey Kovyazin

Ответить
АлНикKom
Сообщения: 2
Зарегистрирован: 11 фев 2006, 20:44

Ошибка при restore

Сообщение АлНикKom » 11 фев 2006, 22:31

Добрый день всем!
Ситуация такая:
IB6.5, IBExpert 2006.01.30, WIN2K SP4, база 40Мб – живая, работает нормально.
Резервирование (сборка мусора, формат - "Transportable") проходит без ошибок.
При восстановлении (флаги по умолчанию) вылетает ошибка -
restore failed for record in table ORG
ERROR: arithmetic exception, numeric overflow, or string truncation
ERROR: Cannot transliterate character between character sets.

Структура таблици ORG:
CREATE TABLE ORG (
ORG_ID INTEGER NOT NULL,
OP_ID INTEGER NOT NULL,
ORG_NAME VARCHAR(40),
ORG_NAME_LONG VARCHAR(250),
RESIDENT VARCHAR(3) DEFAULT 'да' NOT NULL,
INN VARCHAR(12),
OKPO VARCHAR(20),
OKONX VARCHAR(20),
ORG_GVC_ID VARCHAR(8),
KPP VARCHAR(20),
OKVED VARCHAR(20),
MEMBER_TYPE D_ORG_MEMBER_TYPE /* D_ORG_MEMBER_TYPE = SMALLINT CHECK (VALUE IN (0,1,2)) */,
ARCHIVE SMALLINT
);
ALTER TABLE ORG ADD PRIMARY KEY (ORG_ID);
ALTER TABLE ORG ADD CONSTRAINT FK_ORG_OP FOREIGN KEY (OP_ID) REFERENCES OPERATOR (OP_ID);
CREATE UNIQUE INDEX XPKORG ON ORG (ORG_ID, OP_ID);

запись в таблице одна. Кодировка и коллате во всех VARCHAR полях - WIN1251. В самих полях только цифры. Кол-во символов не превышает заданного.
GFIX ошибок не находит.

Подскажите, что может вызывать эту ошибку?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 11 фев 2006, 23:23

Я не помню когда в Борланде исправили и исправляли ли вообще баг с не-английскими default, который именно так и проявлял себя. Попробуй проапдейтить этот 'да' на 'yes' перед бакапом. Сходные проявления были у бага, который когда они правили я тоже не помню - несоответствие rdb$field_length и rdb$character_length в rdb$fields у варчаров. Ещё, возможно, укорачивали хаком размер какого-нибудь поля, которое изначально было создано бОльшим. Ну и ещё раз удостовериться, что у полей чарсет WIN1251, мало ли, кто-то подцепился нечаянно с другим и проальтерил таблицу.

АлНикKom
Сообщения: 2
Зарегистрирован: 11 фев 2006, 20:44

Сообщение АлНикKom » 11 фев 2006, 23:47

Merlin писал(а):Попробуй проапдейтить этот 'да' на 'yes' перед бакапом.
Спасибо! Это сработало отлично!

Ответить