Смена локалей для postgresql#

Руководство, как сменить локаль БД Postgresql

Как проверить какая локализация в данный момент#

  • Выполнить sql-запрос

SELECT name, setting FROM pg_settings WHERE name LIKE 'lc_%';
  • Пример английской локализации

    Английская локализация

  • Пример русской локализации

    Русская локализация

  • Через psql

    psql
    
    \l
    
    • Английская локализация

      Английская локализация

    • Русская локализация

      Русская локализация

Добавление локализации#

Отредактируйте файл /etc/locale.gen, найдите и раскомментируйте строку ru_RU.UTF-8

Выполните команду:

sudo locale-gen

Смена локализации в конфиге postgresql#

Отредактируйте файл /etc/postgresql/<version_number>/main/postgresql.conf

sudo nano /etc/postgresql/<version_number>/main/postgresql.conf

Найдите указанные строки, они должны быть с такими значениями:

  • lc_messages = „ru_RU.UTF-8“

  • lc_monetary = „ru_RU.UTF-8“

  • lc_numeric = „ru_RU.UTF-8“

  • lc_time = „ru_RU.UTF-8“

Пересоздание кластера базы данных#

Примечание

Если вам нужно сохранить ваши данные, то перед выполнением, снимите дамп с вашей БД

Для смены локализации требуется пересоздать кластер базы данных с нужной локалью.

  • Остановите PostgreSQL

    sudo systemctl stop postgresql
    
  • Переинициализируйте кластер

    sudo pg_dropcluster <версия> main --stop  
    sudo pg_createcluster <версия> main --locale=ru_RU.UTF-8 --start
    
  • Запустите postgresql

    sudo systemctl start postgresql
    

Если вам нужно изменить локализацию без пересоздания кластера (например, для одной базы данных), можно создать новую базу с заданной локалью:#

CREATE DATABASE mydb WITH TEMPLATE = template0 LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' ENCODING = 'UTF8';