dポイントプレゼントキャンペーン実施中!

PostgreSQL8.0.8の環境です。知り合いから頼まれての作業なのですが、2~3日前からPHPコネクションエラーが発生し、SSHからpostgres権限で該当DBにログインしようとしたところ、
psql: FATAL: conversion between LATIN1 and EUC_JP is not supported
と表示され、PSQLログインが出来ません。PgAdminやCSEでも同じメッセージです。
1.この状態から何とかログインできる方法はあるのか?
2.バックアップが無いようなので、このDBからテーブルやフィールド項目をGETする方法はあるのか?最悪、これまでのデータを破棄して、新しくDBを作成し、ガラだけでも作りたい。pg_dump をやろうとしても、同じFATALエラーが出ます。
3.何が原因でこれが起きたのか?変な文字が入り込んだ?

経験された方、わかる方がいらっしゃればと思います。

A 回答 (3件)

export PGCLIENTENCODING=UNICODE


を指定するか

pg_dumpallでなくpg_dump "database名"で個別
バックアップ

どちらかでうまくいきませんか
    • good
    • 0
この回答へのお礼

ありがとうございます。
export PGCLIENTENCODING=UNICODEを指定して、pg_dump で個別にスキーマ+データを取り出すことができました。
感謝です!
pg_dumpデータが1Gを越えてました・・・。
スキーマを見ると、トリガーやファンクションのコメント部分に日本語が多数入っており、これが災いしていたのか、と思っています。
とにかくありがとうございました。

お礼日時:2008/02/25 15:47

> >psql -l で見たデータベースのエンコーディングは何になっていますか。


> EUC_JP になってます。

client_encoding をデータベースと同じ EUC_JP にすると、どうでしょうか。
文字コードの conversion エラーは起きないと思いますが。
    • good
    • 0
この回答へのお礼

再度の回答、ありがとうございます。
client_encoding をEUC_JPとしてpg_ctl restart をかけましたが、現象は同じですね。。
これは、壊れたという判断が妥当でしょうか?
せめてどこからかスキーマが取れないか模索しています。psql かpg_connect で接続できないと、テーブル名やフィールド名、データ形は取得できないですよね?

お礼日時:2008/02/25 01:10

psql -l で見たデータベースのエンコーディングは何になっていますか。



postgresql.conf で client_encoding を設定し、それがデータベースの
エンコーディングと不一致になっていませんか(違っていても本来問題
ありませんが、一致していれば自動変換は働かないのでエラーになりま
せん)。

pg_dumpall でのダンプも失敗しますか。

pg_dump --schema-only でスキーマだけをダンプできませんか。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。

>psql -l で見たデータベースのエンコーディングは何になっていますか。
EUC_JP になってます。


>postgresql.conf で client_encoding を設定し、それがデータベースのエンコーディングと不一致になっていませんか
client_encodingはsql_aeciiとなってますがコメントになってました。


>pg_dumpall でのダンプも失敗しますか。
以下のメッセージが出て、途中でexitします。
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: character 0xe697a5 of encoding "UNICODE" has no equivalent in "LATIN1"
pg_dump: The command was: SELECT proretset, prosrc, probin, proargnames, provolatile, proisstrict, prosecdef, (SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) as lanname FROM pg_catalog.pg_proc WHERE oid = '4022564'::pg_catalog.oid
pg_dumpall: pg_dump failed on database "DB名", exiting
※ただし、このDB名は該当のDBではないのです・・・。


>pg_dump --schema-only でスキーマだけをダンプできませんか。
pg_dump: [archiver (db)] connection to database "DB名" failed: FATAL: conversion between LATIN1 and EUC_JP is not supported
が表示され、ダンプできません。このDB名は該当のDBです。


先方に聞いたら、仕様書が無い、とのこと。私も人のことを言えませんが。。。仕様書なし、スキーマも出ず、バックアップもない、でどうやったら復旧できるのか、という感じですねえ。。。

お礼日時:2008/02/24 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!