====== Encoding ======
[[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
WITH OWNER =
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ru_RU.utf8'
LC_CTYPE = 'ru_RU.utf8'
CONNECTION LIMIT = -1;