Соответствующим параметром является --locale=locale
для команды initdb , которая инициализирует кластер базы данных.Если вы не укажете это явно, по умолчанию будет использоваться языковой стандарт системы.(Вы, вероятно, запускаете Ubuntu на языке 'C'.)
Подробнее об этом читайте в превосходном руководстве здесь .
В PostgreSQL вы можете все еще крадется в базе данных с другим языком, основывая новую базу данных на template0
вместо значения по умолчанию templeate1
.Я цитирую руководство здесь :
Параметры кодирования и локали должны совпадать с настройками базы данных шаблонов, кроме случаев, когда template0 используется в качестве шаблона.
Но я бы предпочел воссоздать кластер базы данных с желаемой локалью.Гораздо чище.
Редактировать: информация о доступных локалях
Вы можете только использовать локали, предоставляемые операционной системой.Я цитирую руководство здесь :
Какие локали доступны в вашей системе, под какими именами зависит от того, что было предоставлено поставщиком операционной системы и что было установлено.В большинстве систем Unix команда locale -a предоставит список доступных локалей.Windows использует более подробные названия локалей, например German_Germany или Swedish_Sweden.1252, но принципы те же.
Посмотрите на locale-gen
в Unix-системе, если вы хотите использовать локаль, котораяеще не был создан.Важно понимать, что в вашей ОС можно установить несколько языковых стандартов, но для системных параметров, таких как LC_CTYPE
, LC_COLLATE
и т. Д., Можно выбрать только один из них. Посмотрите на вывод locale
против locale -a
в оболочке.Обычно это одинаково для всех, устанавливается через LC_ALL
.
@ Дэвид: То, что вы сделали, возможно, решило вашу проблему, но вы могли бы сделать это проще.Также имейте в виду, что переменная окружения LANG
предоставляет только по умолчанию для всех настроек локали.Если для любого из них установлено другое значение, LANG
будет переопределено.Установите LC_ALL
, чтобы переопределить любую существующую настройку.Вот один из многих сайтов в сети, рассказывающий вам больше об этом.
Чтобы проверить все текущие языковые настройки вашей базы данных (кластера), запустите в вашей базе данных:
SHOW ALL;
Или, более конкретно:
SELECT *
FROM pg_settings
WHERE name ~~ 'lc%';