1

古いデータベースがあり、Firebird2.5に変換したいと思います。よく知られている問題「gbak:エラー:不正な形式の文字列gbak:無効なデータが検出されました」を含むblobテキストフィールドを含むテーブルのデータを復元すると、問題が発生します。

実行される手順:

  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 -password masterkey "f:\ dbb1.db" "f:\ new.db" -fix_fss_data win1251 -rep

文字セットをwin1252、utf8またはunicode_fssに置き換えても、問題は解決しません。

また、InterBaseDataPumpバージョン3.4を使用してデータを移行しようとしました。

手順:

  1. メタテーブルをバックアップする
  2. 新しいデータベースにメタテーブルを復元する
  3. InterBaseDataPumpを使用してデータを移行する

「不正な文字列」でエラーが発生しました。

エラーが発生するすべてのテーブルには、「BLOB SUB_TYPE 1SEGMENTSIZE80」タイプのフィールドがあります。

当初、データベースには文字セットWIN1252が含まれていたと思います。その後、誰かが文字セットをUTF8に変更し、文字セットのすべてのフィールド定義を変更して、WIN1252からUTF8に照合しました。そうしないと、これらの不正な形式の文字列エラーが発生する理由がわかりません。また、この問題はFireBird2.0からFireBird2.5への移行に共通していることも理解しました。

誰かがこれを解決する方法についてアイデアを持っていますか?

4

3 に答える 3

5

不正な形式の文字列エラーはデータに起因する可能性があり、スイッチ-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データまたはメタデータを適切に修正するために、これらのスイッチの一方または両方をユーザーに示します。

firebirdgbakユーティリティへのリンク

于 2012-11-27T20:28:42.593 に答える
2

ばかげているように聞こえますが、私は次のように修正しました。

メタテーブルのバックアップ
新しいデータベースファイルへの復元の作成
IBExpertを使用して古いテーブルからデータを抽出しますスクリプトにスクリプト
を実行して新しいデータベースにデータを追加します

-fix_fss_Dまたはfix_fss_mと異なる文字セットの組み合わせのいずれも、すべてのデータを新しいデータベースにインポートしませんでした。結果なしですべての無料のシェアウェアツールを試しました。

于 2012-11-28T16:10:25.770 に答える
2

最後に-fix_fss_metadataWIN1252を使用します。それは私がこれを修正するのに役立ちます。

例えば:

gbak -c -r -v -user SYSDBA -password masterkey C:\backup\Example.bkp C:\TEST7.fdb -fix_fss_metadata WIN1252

于 2019-08-05T10:47:42.330 に答える