Today I installed Postgresql 9.2 on Ubuntu precise via apt.postgresql.org – all was relatively painless until I got stuck in a "invalid locale name: it_IT.utf8" error:
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"
I did run locale-gen it_IT.utf8
though, and in fact:
root@ubuntu:/tmp# locale -a
C
C.UTF-8
en_GB.utf8
en_US.utf8
it_IT.utf8
POSIX
Logs don't seem to have any meaningful information on why postgres isn't recognizing it_IT.utf8… can you help?
Best Answer
If PostgreSQL hasn't been restarted after the new locale has been created, that would be the reason.
service postgresql restart
should suffice.This is presumably due to how locales are implemented in Linux
libc
. The new locales don't get seamlessly imported into the environment of already running processes.