10

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?

2 Answers 2

23

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.

1
  • This is much less brutal solution than mine :)
    – giorgiga
    Mar 27, 2013 at 16:29
0

local-gen didn't work in my case.

I installed the missing locale with this:

dpkg-reconfigure locales

Then it showed in locale -a:

locale -a

And then restarting postgresql:

service postgresql restart

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .