RBA*_*RBA 1 firebird firebird2.5
我有一个旧的数据库,我想将其转换为FireBird 2.5.在包含blob文本字段的表上恢复数据时出现问题,其中包含众所周知的问题"gbak:错误:格式错误的字符串gbak:检测到无效数据"
执行的步骤:
1)gfix -user SYSDBA -password masterkey f:\ dbb.db -shut -force 0
2)gfix -v -full -user SYSDBA -password masterkey f:\ dbb.db
3)gbak -v -t -g -ig -user SYSDBA -YF:\ backup.log -password"masterkey"f:\ dbb.db F:\ dbb1.db
4)gbak -r -v -o -p 16384 -YF:\ log.txt -user SYSDBA -密码masterkey"f:\ dbb1.db""f:\new.db"-fix_fss_data win1251 -rep
用win1252,utf8或unicode_fss替换字符集并不能解决问题.
我还尝试使用InterBase Data Pump 3.4版来迁移数据.
步骤:1)备份metatable
2)在新数据库上恢复metatable
3)使用InterBase Data Pump迁移数据
遇到错误"格式错误的字符串".
发生错误的所有表都有一个类型为"BLOB SUB_TYPE 1 SEGMENT SIZE 80"的字段
我怀疑在开始时数据库有字符集WIN1252.之后有人将charset更改为UTF8并更改了charset的所有字段定义,并从WIN1252更改为UTF8.否则我不明白为什么我会遇到这些格式错误的字符串错误.另外,我知道FireBird 2.0到FireBird 2.5迁移这个问题很常见.
有没有人知道如何解决这个问题?
格式错误的字符串错误可能来自数据,您可以使用switch -fix_fss_d更正此问题,但它也可以来自元数据,您必须使用开关-fix_fss_m
-FIX_FSS_D [ATA]
此开关强制gbak在还原期间修复格式错误的UNICODE_FSS字符数据.
在正常情况下,不应要求此开关和以下开关.但是,如果还原操作因"格式错误的字符串"错误而失败,则gbak输出的消息将引用用户指向这些开关中的一个或两个,以根据需要修复格式错误的UNICODE_FSS数据或元数据.
-FIX_FSS_M [ETADATA]
此开关强制gbak在还原期间修复格式错误的UNICODE_FSS元数据.
在正常情况下,不应要求此开关和前一个开关.但是,如果还原操作因"格式错误的字符串"错误而失败,则gbak输出的消息将引用用户指向这些开关中的一个或两个,以根据需要修复格式错误的UNICODE_FSS数据或元数据.