[pgsql-jp: 36482] Postgresのエラーメッセージについて

砂田 hoge @ mic9.co.jp
2005年 12月 2日 (金) 17:25:05 JST


いつもメーリングリストを読んで勉強させて頂いております。
砂田と申します。

(環境)
・PostgreSQL 7.1.3 起動port 5433
・PostgreSQL 7.4.9 起動port 5432
・PHP 4.3.2

(前置)
今までは、PostgreSQL 7.4.9のみを起動して1年以上正常に
動作をしていましたが、
先日、他のサーバで稼動していたPostgreSQL 7.1.3のデータをこのサーバに移行
しました。
最初は元のDatabaseもこの7.4.9に移行しようとしたのですが、元のデータが
一部文字化けしていた為、リストア時に途中でストップしてしまいました。

色々と試したのですが、同バージョン(7.1.3)へのリストアにしか成功しません
でした・・・文字化けしたデータはそのままDBに入っています。
7.1から7.2へのリストアもエラーでストップしてしまいました。

上記理由の為、同一サーバで異なるバージョンのPostgresを別ポートで稼動させ
ております。


(本題)
7.1.3を起動してプログラム(PHP)からアクセスする毎に下記のエラーが
出てしまいます。アクセス頻度が多い為大量のメッセージが
表示されてしまいます。
また、このエラーメッセージと関係があるかは調査しきれていませんが、
DBを移行してから、1週間で2回ほどサーバがダウンしてしまいました。
------------------------------------------------------------------------------
Unsupported frontend protocol.
 ERROR:  Function 'pg_client_encoding()' does not exist
         Unable to identify a function that satisfies the given argument types
         You may need to add explicit typecasts
------------------------------------------------------------------------------

「Unsupported frontend protocol」については、Postgres 7.3 未満と 
Postgres 7.4 以降のバージョンで、通信プロトコルのバージョンがかわって
おり、通信プロトコルのバージョンが異なっている場合に、出力される様です。

下記参照
http://www.asahi-net.or.jp/~aa4t-nngk/pgsql4.html#unsupportedfep

7.4.9を7.3.xにバージョンダウンすれば、エラーは無くなる様な気がしますが、
現在のバージョンのままでこのエラーを止める事は出来るのでしょうか。


二つ目の「ERROR:  Function 〜」については、クライアントの
エンコーディングに問題がありそうなのですが、あまり情報がなく困っています。
何か情報をお持ちの方がいましたらアドバイス頂けますでしょうか。


また、文字化けのエラーデータは無視して7.1から7.4へリストアする方法は
あるのでしょうか。

#INSERT形式でpg_dumpを行い、エラー行を手動で削除しようとしましたが
ちょっと現実的でないので、やめました。。。

長文で失礼致しました。
宜しくお願いいたします。






pgsql-jp メーリングリストの案内