On Mon, Sep 19, 2011 at 10:04 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> Marti Raudsepp <ma...@juffo.org> writes:
>> On Tue, Sep 20, 2011 at 03:24, Thom Brown <t...@linux.com> wrote:
>>> ERROR:  could not create locale "sr_SB.utf8": No such file or directory
>>> It's correct in that it shouldn't be able to create the locale since
>>> it's not installed, but what file can't it find?  What is the user
>>> supposed to do with this message?
>
>> Unfortunately locales are OS-specific so there's not much universal
>> advice that Postgres could give.
>
> The reason it's doing that is that newlocale() is returning ENOENT,
> which is what it's supposed to do according to the standard:
>
>        ERRORS
>
>        The newlocale() function shall fail if:
>
>        [ENOMEM]
>        There is not enough memory available to create the locale object or 
> load the locale data.
>        [EINVAL]
>        The category_mask contains a bit that does not correspond to a valid 
> category.
>        [ENOENT]
>        For any of the categories in category_mask, the locale data is not 
> available.
>
> The generic meaning of ENOENT is "file not found", and at some level
> this probably *is* a file-not-found situation, but Postgres has no way
> to know which file is missing.
>
> We could possibly add a HINT suggesting that the locale isn't installed,
> but I don't see that we could offer any useful generic advice about how
> to install it.  I'm also worried about how to phrase the hint to cover
> some other obvious possibilities, like "you fat-fingered the locale
> name".

Maybe something like this?

HINT: The operating system was unable to find any locale data for the
locale name you specified.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to