5

私のアプリケーション (Delphi および ZEOS コンポーネントで開発) は PostgreSQL 8.4 を使用し、いくつかのサムネイル画像をbytea列に保存します。

PostgreSQL 9.2 に移行したいのですが、ダンプを復元したところ、これらのイメージを取得しようとする場合を除いてすべて正常に動作しhexますescape

escape考えられる解決策は 2 つあります。表現の Postgres 9.2 設定を変更するか、hexアプリケーションを介してバイナリ データの文字列を変更します。しかし、最善の解決策は何ですか?PostgreSQL 9.X が表現hexのために変更されたのはなぜですか? 簡単なセットアップですか、それとも技術的な理由ですか?bytea

4

1 に答える 1

4

Postgres 9.0 のリリース ノートに根拠が示されています。

  • bytea値を 16 進数で記述できるようにしました。 (Peter Eisentraut )

サーバー パラメータは、出力bytea_outputに 16 進数または従来の形式を使用するかどうかを制御しbyteaます。PQescapeByteaConn()PostgreSQL 9.0 以降のサーバーに接続すると、Libpq の関数は自動的に 16 進形式を使用します。ただし、9.0 より前のバージョンの libpq は、新しいサーバーからの 16 進形式を正しく処理しません。

新しい 16 進形式は、バイナリ データを使用するより多くのアプリケーションと直接互換性があり、追加の変換なしで保存および取得できます。また、従来の形式よりも読み書きが大幅に高速です。

あなたはすでに気づいているようですbytea_output

于 2013-06-17T23:08:33.467 に答える