Ошибка при создании базы данных PostgreSQL связанная с локалью
Когда при создании базы данных в кластере PostgreSQL операционной системе Ubuntu 16.04 возникает ошибка
ERROR: invalid locale name: "ru_RU.UTF-8"
Установка новых локалей
1.Необходимо проверить установленные локали
# locale -a
en_AU.utf8
...
POSIX
2.Сгенерировать новую локаль ru_RU.UTF-8
# locale-gen ru_RU.UTF-8
Generating locales (this might take a while)...
ru_RU.UTF-8... done
Generation complete.
3.Сконфигурировать локаль
# dpkg-reconfigure locales
4.Посмотреть установленные локали
# C
C.UTF-8
en_AU.utf8
...
POSIX
ru_RU.utf8
...
Пересоздать кластер с учётом локали
5.Посмотреть версию кластера
# pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.5 main 5432 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
Здесь версия 9.5 название main
6.Удалить кластер
# pg_dropcluster --stop 9.5 main
Redirecting stop request to systemctl
7.Создать новый кластер
# pg_createcluster --locale ru_RU.utf8 --start 9.5 main
Creating new cluster 9.5/main ...
config /etc/postgresql/9.5/main
data /var/lib/postgresql/9.5/main
locale ru_RU.utf8
socket /var/run/postgresql
port 5432
Redirecting start request to systemctl
8.Cозлать таблицу заново используя следующий SQL запрос.
# su postgres
postgres> psql
Важно! Необходимо чтобы название локали соответствовало ru_RU.utf8 (ru_RU.UTF-8 не сработает)
CREATE DATABASE <db_name>
WITH OWNER = <user_name>
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ru_RU.utf8'
LC_CTYPE = 'ru_RU.utf8'
CONNECTION LIMIT = -1;
comments powered by Disqus