PostgreSQLのbyteaカラムが\xXXXXXXと表示される
$ psql test test=> create table t(b bytea); CREATE TABLE test=> insert into t(b) values('foo'); INSERT 0 1 test=> select * from t; b ---------- \x666f6f (1 行)
'foo'を挿入すると'\x666f6f'と16進表示される。
PostgreSQL 9.0の仕様変更っぽい。
byteaの出力はデフォルトで16進数書式になりました。(Peter Eisentraut)
互換性が必要ならばbytea_outputサーバパラメータを使用して伝統的な出力書式を選択することができます。
リリース9.0
これを回避するためにはencode関数を利用するか
test=> select encode(b, 'escape') from t; encode -------- foo (1 行)
サーバの設定(postgresql.conf)を変更する
bytea_output (enum)
クライアント接続デフォルト
bytea型の値の出力形式を設定します。 有効な値はhex(デフォルト)、およびescape(PostgreSQLの伝統的な書式)です。 より詳細は項8.4を参照してください。 bytea型は常にこの設定に係わらず、入力時に双方の書式を受け付けます。
bytea_output = 'escape'