[pgsql-jp: 41984] Re: RDS上のデータベースのエンコーディングについて

熊谷総合研究所 mail @ skuma.net
2018年 8月 8日 (水) 14:06:14 UTC


熊谷です。

解決したのお知らせします。

RDS側のPostgreSQLの設定変更で文字化けはなくなりました。

変更前:client_encoding = UTF-8

変更後:client_encoding = EUC_JP

よって,下記現象の
> RDS上に構築したデータベースにリストアすると
> エンコーディングがUTF-8になってしまう。
は私の認識が間違っていて,実際には

データベースのエンコーディングはEUC_JPになっていたが,
クライアント側が取り出す際にUTF-8になっていた
ということになります。




> 初めて投稿いたします。熊谷と申します。
>
> 現在オンプレで運用しているデータベースをAWS上の
> RDSへ移植作業を行っておりますが,以下の現象と
> なってしまいます。
>
> ■現象
> オンプレでpg_dumpにより取得したバックアップ
> (データベースエンコーディングはEUC_JP)を
> RDS上に構築したデータベースにリストアすると
> エンコーディングがUTF-8になってしまう。
>
> ■手順
> 【RDS】
> ・DB削除
> stg_xxx=> drop database xxx;
> DROP DATABASE
>
> ・DB作成
> stg_xxx=> create database xxx ENCODING 'EUC_JP' LC_COLLATE 'ja_JP.eucjp'
> LC_CTYPE 'ja_JP.eucjp' TEMPLATE template0 owner xxx;
> CREATE DATABASE
>
> \lの結果
>    名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |
> xxx       | xxx     | EUC_JP           | ja_JP.eucjp | ja_JP.eucjp
>
> ・リストア
> $ psql -h10.10.10.10 -Uxxx -dxxx < xxx_stg.sql
>
> 環境は以下の通りです。
> psql (9.6.5, サーバー 9.6.8)
>
>
> ■試したこと
> 上記create databaseのとき,照合順序とCtypeいずれも
> 「C」とした場合も結果は変わりませんでした。
>
> また,RDSではなく別にECSを立ててそこにインストールした
> PostgreSQLに対しては,同じ手順で行ってもEUC_JPで
> 取り込めますので,バックアップファイルの問題では
> ないと思っています。
>
> なおxxxユーザーですが,オンプレではスーパーユーザー
> 権限を持っていますが,RDS上ではそのようなユーザーが
> 作成できなかったため,一般ユーザーとしています。
>
> 対処方法等ご存知の方がいらっしゃいましたらご教示
> 下さいますようお願いいたします。
>
> -------------------------
> 熊谷 慎一
> skuma_ @ nify.com
>
>
>






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