In breve, non puoi farlo solo con phpPgAdmin o SQL senza rischiare la corruzione dei dati esistenti .Devi esportare tutti i dati, creare database con la codifica corretta e ripristinare i dati esportati.
Ecco come dovresti procedere:
-
crea dump del database :
pg_dump your_database > your_database.sql
questo salverà il tuo database in formato sql, nella codifica che hai attualmente.
-
elimina database (o rinominalo):
DROP DATABASE your_database
se hai spazio di archiviazione sufficiente per farlo, ti consiglio di lasciare il vecchio database finché non ti assicuri che tutto sia a posto con quello nuovo, rinomina esso:
ALTER DATABASE your_database RENAME TO your_database_backup;
-
crea database con una nuova codifica :
CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;
-
importare i dati dal dump creato in precedenza :
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
devi impostare la codifica del client psql su quella che avevi nel vecchio database.
Non è possibile modificare la codifica al volo in quanto richiederebbe la riscrittura della maggior parte dei dati interni del database, il che equivale quasi a ricreare il modo db che ho descritto.
È possibile modificare semplicemente le informazioni interne di Postgres sul database e tutti i nuovi dati dopo questa modifica verranno salvati correttamente, tuttavia i tuoi dati esistenti potrebbero essere danneggiati .