Stručně řečeno, nemůžete to udělat pouze s phpPgAdmin nebo SQL, aniž byste riskovali poškození stávajících dat .Musíte exportovat všechna data, vytvořit databázi se správným kódováním a obnovit exportovaná data.
Takto byste měli postupovat:
-
vytvořit výpis databáze :
pg_dump your_database > your_database.sql
tím se uloží vaše databáze ve formátu sql, v kódování, které aktuálně máte.
-
smazat databázi (nebo jej přejmenujte):
DROP DATABASE your_database
pokud na to máte dostatek místa, doporučuji ponechat starou databázi, dokud se neujistíte, že je vše v pořádku s novou, přejmenujte to:
ALTER DATABASE your_database RENAME TO your_database_backup;
-
vytvořit databázi s novým kódováním :
CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;
-
importujte data z dříve vytvořeného výpisu :
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
musíte nastavit kódování klienta psql na kódování, které jste měli ve staré databázi.
Změna kódování za běhu není možná, protože by to vyžadovalo přepsání většiny interních databázových dat, což se téměř rovná opětovnému vytvoření db, jak jsem popsal.
Je možné pouze změnit interní postgresové informace o databázi a všechna nová data po této změně budou správně uložena, avšak vaše stávající data mohou být poškozena .