2016-07-28 19 views
0

最近、pg_dumpとpg_restoreユーティリティを使用して、CentOS 6.5を実行している別のサーバ上のDebian 5のPostgreSQLバージョン8.4のすべてのデータベースをPostgreSQLバージョン9.5に移行しました。データベースのエンコーディングはSQL_ASCII です。テーブルには巨大なエンコードされたデータが含まれています。残りのデータベースは正常に動作しているようですが、特定のデータベースのみが正常に動作しているようです。PostgreSQL 9.5エラー: "UTF8"エンコーディングのバイトシーケンスが正しくありません:0xc3 0xee

私が受け取る新しいサーバー上のデータベースからデータを取得しよう:

megaart_www=# select * from data_tbl limit 10; 
ERROR: invalid byte sequence for encoding "UTF8": 0xc1 0xe0

両方のサーバー上の構成が、私はこれらのコマンドを実行して同一であり、確かに。結果は同じです。

postgres=# SHOW client_encoding; 
client_encoding 
----------------- 
UTF8 
(1 row)
 
postgres=# SHOW server_encoding; 
server_encoding 
----------------- 
UTF8 
(1 row) 

データベースのエンコーディング:

megaart_www=# show server_encoding; 
server_encoding 
----------------- 
SQL_ASCII 
(1 row) 

データベース・サーバーの構成は同じですが、エラーを受信し続けます。

答えて

1

あなたのserver_encodingは新しいサーバーのSQL_ASCIIですが、client_encodingはUTF8ですか?基本的にUTF8はこれらのバイトの翻訳を知らないと言っています。私はあなたがあなたのclient_encodingを一致させると想像します:SET client_encoding = 'SQL_ASCII'とクエリを繰り返す、それは正常に動作します。あなたが実際にあなたのデータをSQL_ASCIIとして保存したいかどうか、それはあなたが答える必要がある質問です。

サーバーのエンコーディングはインスタンス作成時に構成されているため、古いサーバーUTF8と一致する必要がある場合は、インスタンスを再作成してデータを再ロードする必要があります。クライアントエンコーディングは、セッションレベルで変更できます。これはエラーを引き起こすこれらの2つのパラメータの翻訳です。

+0

前述のように、古いサーバーのclient_encoding 'UTF8'では、正常に動作しています。 –

+0

私はあなたが私が置いたものを読むとは思わない。 – d1ll1nger

関連する問題