Назад | Перейти на главную страницу

Postgresql 9.2 «недопустимое имя локали» в Ubuntu 12.04

Сегодня я установил Postgresql 9.2 на Ubuntu точно через apt.postgresql.org - все было относительно безболезненно, пока я не застрял в ошибке «недопустимое имя локали: it_IT.utf8»:

root@ubuntu:/tmp# sudo -u postgres psql -Xc "CREATE DATABASE test TEMPLATE template0 ENCODING 'utf8' LC_CTYPE='it_IT.utf8'"
ERROR:  invalid locale name: "it_IT.utf8"

Я бежал locale-gen it_IT.utf8 хотя и по факту:

root@ubuntu:/tmp# locale -a
C
C.UTF-8
en_GB.utf8
en_US.utf8
it_IT.utf8
POSIX

Журналы, похоже, не содержат какой-либо значимой информации о том, почему postgres не распознает it_IT.utf8 ... вы можете помочь?

Если PostgreSQL не был перезапущен после создания новой локали, причина в этом. service postgresql restart должно хватить.

Предположительно это связано с тем, как локали реализованы в Linux. libc. Новые языковые стандарты не могут быть легко импортированы в среду уже запущенных процессов.

local-gen не сработало в моем случае.

Я установил отсутствующий языковой стандарт следующим образом:

dpkg-reconfigure locales

Затем это проявилось в locale -a:

locale -a

А затем перезапустите postgresql:

service postgresql restart