つまり、既存のデータ破損のリスクを冒さずに、phpPgAdminまたはSQLだけでこれを行うことはできません。 。すべてのデータをエクスポートし、正しいエンコーディングでデータベースを作成し、エクスポートされたデータを復元する必要があります。
これがあなたが進むべき方法です:
-
データベースダンプを作成 :
pg_dump your_database > your_database.sql
これにより、データベースがSQL形式で、現在使用しているエンコーディングで保存されます。
-
データベースを削除 (または名前を変更します):
DROP DATABASE your_database
それを行うのに十分なストレージがある場合は、新しいデータベースですべてが問題ないことを確認するまで古いデータベースを残すことをお勧めします。名前を変更 それ:
ALTER DATABASE your_database RENAME TO your_database_backup;
-
新しいエンコーディングでデータベースを作成する :
CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;
-
以前に作成されたダンプからデータをインポート :
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
psqlクライアントエンコーディングを古いデータベースにあったものに設定する必要があります。
エンコーディングをオンザフライで変更することはできません。これは、内部データベースデータのほとんどを書き換える必要があるためです。これは、私が説明したdbの方法で再作成するのとほぼ同じです。
データベースに関する内部postgres情報を変更することは可能であり、この変更後に新しいデータは正しく保存されますが、既存のデータは破損する可能性があります 。