После установи на 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