Настройка русской локали в Postgres

После установи на VDS постгреса может проявится вот такая проблема при создании новой базы данных:

ERROR:  new collation (ru_RU.utf8) is incompatible with the collation of the template database (en_US.UTF-8)
ПОДСКАЗКА:  Use the same collation as in the template database, or use template0 as template

Это означает, что сервер "не умеет" работать с ru_RU.utf8", проверяем -- с помощью команды /list

postgres=# \list
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres |          |          |             |             | postgres=CTc/postgres
(3 rows)

это происходит потому, что на уровне кластера устоит локаль en_US.UTF-8. Для решения проблемы достаточно пересоздать кластер следующие образом:

pg_dropcluster --stop <версия постгреса, у меня 9.3> main
pg_createcluster --locale ru_RU.UTF-8 --start 9.3 main
Creating new cluster 9.3/main ...
  config /etc/postgresql/9.3/main
  data   /var/lib/postgresql/9.3/main
  locale ru_RU.UTF-8
  port   5432

проверяем:

postgres=# \list
                                  Список баз данных
    Имя    | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа     
-----------+----------+-----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 template0 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres |          |           |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres |          |           |             |             | postgres=CTc/postgres
(3 строки)

Комментариев 0
Нужна авторизация с помощью
Об авторе
Илья Илья

меня можно найти тут