PostgreSQLとUNICODE

PostgreSQLをインストール。

諸般の事情というか、単にやってみたかっただけだったのか、現在のサーバ上には2つのクラスタがある。
1つはEUCコードでもう一つはUNIコード。

→ポートを指定してそれぞれのDBにアクセスを振り分けている
 (postgresql.confのコメント化されている「port=」を有効化してport番号を指定する。)

確実に移行できるように、今回も2個のクラスタでコードをわけることにした。

EUCコードの方のクラスタは特に問題なく設定が完了したが、問題はUNIコードの方。

initdbでDBを作成してpsqlで覗こうとしたら、
ERROR: invalid byte sequence for encoding “UTF8”: 0xc1b0
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by “client_encoding”.
といって怒られた。
でも、ヒントが付いていたからあまり怒っていなかったのか!?

前回もPostgreSQL Ver8で、今回も同じ。前回は問題なかったのに..

しばらく考えても違いがよくわからんが解決方法はわかった。

PostgreSQLの実行ユーザの.bash_profileに
「export PGCLIENTENCODING=EUC-JP 」
を追加して、source ~/.bash_profileでプロファイルを反映する。

で、再びpsqlで覗くと問題なく参照できた。ちゃんとUTF8になってるし。

でも、コマンドでDBを見るなんてあまりしない。
この状況は「だんな..これから他のところでも変更しなくちゃならないところが出てきまっせ..」ということか?

ちなみに、前回はソースからインストールして添付されていた起動スクリプトのサンプルを修正して2つのDBがあがるようにしている。

今回PostgreSQLはaptでインストールしてみたのだが、やたらと長い起動スクリプトになっていたし。

ちょっと面倒な気がしてきた...