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