简而言之,只有phpPgAdmin或SQL才能做到这一点,而不冒existing data corruption%的风险.
你应该这样做:
create database dump:
pg_dump your_database > your_database.sql
这将以sql格式保存您的数据库,使用您当前拥有的编码.
delete database(或将其重命名):
DROP DATABASE your_database
如果您有足够的存储空间,我建议您保留旧数据库,直到您确定新数据库一切正常为止,rename it:
ALTER DATABASE your_database RENAME TO your_database_backup;
create database with new encoding:
import data from dump created before:
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
您需要将psql客户机编码设置为旧数据库中的编码.
动态更改编码是不可能的,因为它需要重写大多数内部数据库数据,这几乎等同于按照我描述的方式重新创建数据库.
这是可能的,只是改变内部postgres信息的数据库和任何新的数据后,这种改变将被正确保存,但你现有的数据might get corrupted.