
Проблема такая. В горячо любимом мной сервере FireBird 2.0.0 я обнаружил ошибку, которая возникает после действий:
1) Создаем таблицу RL_DISCIPLINES с двумя полями:
CREATE TABLE RL_DISCIPLINES (
ID INTEGER NOT NULL,
DISCNAME_RUS CHAR(254) CHARACTER SET WIN1251 COLLATE WIN1251
);
вводим строк 20 данных в эту таблицу на русском языке.
2)
Потом вдруг решаем изменить тип данных столбца DISCNAME_RUS на CHAR(254) CHARACTER SET UTF8 COLLATE UNICODE
3) изменяем имя столбца на DISCNAME.
После этого БД работает нормально, но проблема заключается в следующих моментах:
1) Не проходит успешно Restore DataBase после его Backup при помощи IBExpert
2) Не проходит успешно Restore DataBase после его Backup при помощи утилиты gback.exe
3) После создания в этой таблице дополнительного поля
discname_utf8 типа CHARACTER SET UTF8 COLLATE UNICODE
при запуске запроса
insert into rl_disciplines(discname_utf8)
select
discname
from rl_disciplines
order by id
размер базы данных растет бесконечно, сервер уходит в бесконечный цикл, хотя и работает стабильно, не падает. Размер файла БД растет и растет и конца-края этому не видно.
сервер FireBird 2.0.0 установлен в архитектуре SuperServer под операционной системой Windows 2000 Professinal SP4 RUS.
Цель: Необходимо цикл backup/restore database выполнить успешно.
Ниже приведен отрывок протокола сообщений утилиты gback при restore DB:
gbak: activating and creating deferred index FK_RL_INFRESOURCES_RESTYPE_ID
gbak: activating and creating deferred index FK_RL_DISCBYCHAIR_DISCID
gbak:cannot commit index FK_RL_DISCBYCHAIR_DISCID
gbak: ERROR:violation of FOREIGN KEY constraint "PK_RL_DISCIPLINES" on table "RL_DISCIPLINES"
gbak: ERROR: Foreign key reference target does not exist
gbak: committing metadata
gbak:finishing, closing, and going home
gbak:Database is not online due to failure to activate one or more indices.
gbak:Run gfix -online to bring database online without active indices.
когда же операцию восстановления БД из баккапа делаю в IBExpert, он сообщает:
bak:restoring data for table RL_DISCBYCHAIR
gbak: 27 records restored
IBE: Invalid token.
Malformed string.
gds_$send failed.
Вот: Malformed string !
Кстати, образ БД крохотный. 1 Mb.
Если что могу выслать. Никаких коммерческих секретов у меня нет