我有一个旧数据库,我想将其转换为 Firebird 2.5。在包含众所周知的问题“gbak:错误:格式错误的字符串 gbak:检测到无效数据”的表上还原包含 blob 文本字段的数据时会出现问题
执行的步骤:
- 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 -YF:\backup.log -password "masterkey" f:\dbb.db F:\dbb1.db
- gbak -r -v -o -p 16384 -YF:\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 数据泵迁移数据
遇到错误“格式错误的字符串”。
所有发生错误的表都有一个类型为“BLOB SUB_TYPE 1 SEGMENT SIZE 80”的字段
我怀疑一开始数据库的字符集是 WIN1252。之后,有人将字符集更改为 UTF8,并将字符集和整理的所有字段定义从 WIN1252 更改为 UTF8。否则我不明白为什么会收到这些格式错误的字符串错误。另外,我知道这个问题在 FireBird 2.0 到 FireBird 2.5 的迁移中很常见。
有人知道如何解决这个问题吗?