Krótko mówiąc, nie możesz tego zrobić tylko z phpPgAdmin lub SQL bez ryzyka istniejącego uszkodzenia danych .Musisz wyeksportować wszystkie dane, stworzyć bazę danych z poprawnym kodowaniem i przywrócić wyeksportowane dane.
Postępuj w ten sposób:
-
utwórz zrzut bazy danych :
pg_dump your_database > your_database.sql
spowoduje to zapisanie Twojej bazy danych w formacie sql, w kodowaniu, które aktualnie posiadasz.
-
usuń bazę danych (lub zmień jego nazwę):
DROP DATABASE your_database
jeśli masz wystarczająco dużo miejsca, aby to zrobić, zalecam pozostawienie starej bazy danych, dopóki nie upewnisz się, że wszystko jest w porządku z nową, zmień nazwę to:
ALTER DATABASE your_database RENAME TO your_database_backup;
-
utwórz bazę danych z nowym kodowaniem :
CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;
-
importuj dane ze zrzutu utworzonego przed :
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
musisz ustawić kodowanie klienta psql na to, które miałeś w starej bazie danych.
Zmiana kodowania w locie nie jest możliwa, ponieważ wymagałaby przepisania większości danych z wewnętrznej bazy danych, co jest prawie równoznaczne z odtworzeniem bazy danych w opisany przeze mnie sposób.
Można po prostu zmienić wewnętrzne informacje postgres dotyczące bazy danych, a wszelkie nowe dane po tej zmianie zostaną poprawnie zapisane, jednak istniejące dane mogą zostać uszkodzone .