Сегодня я установил 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