Страница 1 из 1

Ошибка при restore

Добавлено: 11 фев 2006, 22:31
АлНикKom
Добрый день всем!
Ситуация такая:
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 ошибок не находит.

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

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

Добавлено: 11 фев 2006, 23:47
АлНикKom
Merlin писал(а):Попробуй проапдейтить этот 'да' на 'yes' перед бакапом.
Спасибо! Это сработало отлично!