У меня старая база данных, и я хочу преобразовать ее в Firebird 2.5. Проблема возникает при восстановлении данных в таблицах, содержащих текстовые поля больших двоичных объектов, с хорошо известной проблемой gbak: ОШИБКА: неверно сформированная строка gbak: обнаружены недопустимые данные
Выполненные шаги:
- gfix -user SYSDBA -password masterkey f: \ dbb.db -shut -force 0
- gfix -v -full -user SYSDBA -password masterkey f: \ dbb.db
- gbak -v -t -g -ig -user SYSDBA -Y F: \ backup.log -password masterkey f: \ dbb.db F: \ dbb1.db
- gbak -r -v -o -p 16384 -Y F: \ log.txt -user SYSDBA -password masterkey f: \ dbb1.db f: \ new.db -fix_fss_data win1251 -rep
замена набора символов на win1252, utf8 или unicode_fss не решает проблемы.
Я также попытался перенести данные с помощью InterBase Data Pump версии 3.4.
Шаги:
- резервное копирование метатаблицы
- восстановить метатаблицу в новой базе данных
- переносить данные с помощью InterBase Data Pump
Обнаружены ошибки Неправильная строка.
Все таблицы, в которых возникает ошибка, имеют поле типа BLOB SUB_TYPE 1 SEGMENT SIZE 80
Подозреваю, что изначально в базе была кодировка WIN1252. После этого кто-то изменил кодировку на UTF8 и изменил определение всех полей для кодировки и сопоставления с WIN1252 на UTF8. В противном случае я не понимаю, почему я получаю эти искаженные строковые ошибки. Кроме того, я понял, что эта проблема характерна для миграций с FireBird 2.0 на FireBird 2.5.
Кто-нибудь знает, как это решить?