https://www.sinyawskiy.ru/invalid_locale.html?ysclid=lr4m0lgru7516717108 - Ошибка PostgreSQL - invalid locale name
При создании базы данных в кластере PostgreSQL в linux возникает ошибка 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 запрос.
Важно! Необходимо чтобы название локали соответствовало ru_RU.utf8 (ru_RU.UTF-8 не сработает)
# su postgres
postgres> psql 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;