PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come posso modificare la codifica del database per un database PostgreSQL utilizzando sql o phpPgAdmin?

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:

  1. crea dump del database :

    pg_dump your_database > your_database.sql

    questo salverà il tuo database in formato sql, nella codifica che hai attualmente.

  2. 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;

  3. crea database con una nuova codifica :

    CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;

  4. 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 .