0

TemplaVoila1.5.5とTYPO34.5.5を使用しています。latin1_swedish_ciTYPO3データベースを(ISO-8859-1)からに切り替えようとしましたutf8_general_ci。したがって、すべてをバイナリに変換し、すべてをutf8_general_ciに変換するPHPスクリプトを作成しました。TemplaVoilaを除いてすべてが機能しているように見えました(Typo3の他のすべての設定はすでにUTF-8用に準備されていますが、データベースは準備されていません)。TYP3ページを開くと、次のメッセージが表示されました。

テーブル/行「pages:x」のデータ構造セットが見つかりませんでした。最初にデータ構造とテンプレートオブジェクトを選択してください。

テンプレートマッピングを調べると、使用可能なマッピングがないという次のメッセージが表示されました。tx_templavoila_tmplobj列のテーブルではtemplatemapping、マッピングはBLOBとして保存されます。UTF-8に変換すると、すべてが失われます。そのバイナリのため、私はそれにアクセスして簡単な方法で変換することができません。

どうすればマッピングを維持できますか?すべてを新しくマッピングしたくありません。私に何ができる?

ここに2つの提案された解決策がありますが、もっと良いものがあるかどうか知りたいです。Michaelのソリューションでは、すべてを再度マップする必要がありますか?

マッピングを復元する最も速い方法は何ですか?

4

2 に答える 2

1

変換されたデータを復元できるかどうかはわかりませんが、変換スクリプトを実行する意思がある場合は、次のアプローチである程度の成功を収めています。

  1. tx_templavoila_tmplobjテーブルのtemplatemappingフィールドのデータのシリアル化を解除します。
  2. シリアル化されていないデータ配列をターゲットエンコーディングに変換します(この目的で使用できる可能性のあるヘルパーメソッドt3lib_cs :: convArrayがあります)。
  3. 変換されたデータをシリアル化し、templatemappingフィールドに保存し直します。
于 2012-05-07T14:28:34.543 に答える
0

最速の方法:フィールドを手動でに戻すだけmediumtextです。すべてのマッピングは再びうまくいくはずです。私は知っています、それは速くて汚いです、しかし私のために働きました...

于 2012-05-09T11:38:51.253 に答える