Изменение кодировки в PostgreSQL 9.1

у меня есть следующие базы данных

sudo -u postgres psql -c "list"

                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | LATIN1   | en_US   | en_US | 
 template0 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
(3 rows)

как я могу изменить кодировку с LATIN1 на UTF8 в базе данных template1 или template0?

2 ответов


поскольку у вас нет никаких фактических данных здесь, просто выключите и удалите кластер (сервер и набор баз данных) и создайте его заново. Какую операционную систему вы используете? Стандартная команда PostgreSQL для создания нового кластера-initdb, но в Debian / Ubuntu et al вы обычно используете pg_createcluster

см. также как изменить кодировку символов базы данных postgres?

хотя can попробуйте настроить кодировки, это не рекомендуемый. Несмотря на то, что я предложил это в этом связанном вопросе, если у вас есть данные с символами latin1, вам нужно будет перекодировать их в utf-8.


просто использовать:

обновить кодировку набора pg_database = pg_char_to_encoding ('LATIN1'), где datname = 'seguros'