Thread: Postgresql 9.0.4 initdb bug on solaris 64 bit

Postgresql 9.0.4 initdb bug on solaris 64 bit

From
Gary Wong
Date:
Hi,

I'm trying to install Postgresql 9.0.4 on solaris but ran into problems
when trying to run the "initdb" command under the postgres Unix account.

[Server OS Version]
                  Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC
     Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
                            Assembled 11 August 2010


[Downloaded source code from Postgresql and unzipped in the "/usr/postgres"
directory]
postgresql-9.0.4-S10.sparc-64.tar.bz2


[Environment under in the postgres account]
$ env
_=/bin/env
LC_MONETARY=en_US.ISO8859-15
LC_TIME=en_US.ISO8859-15
SSH_TTY=/dev/pts/2
PATH=/usr/postgres/9.0-pgdg/bin/64:/bin:/usr/sfw/bin:/usr/sbin:/usr/local/pgsql/data:/usr/bin
LOGNAME=postgres
MAIL=/usr/mail/postgres
PS1=svctdb55:$LOGNAME:$PWD
$
USER=postgres
LC_MESSAGES=C
LC_CTYPE=en_US.ISO8859-1
SHELL=/bin/ksh
HOME=/export/home/postgres
LC_COLLATE=en_US.ISO8859-15
LC_NUMERIC=en_US.ISO8859-15
SSH_CONNECTION=10.160.135.141 1589 149.136.20.64 22
SSH_CLIENT=10.160.135.141 1589 22
LD_LIBRARY_PATH=/usr/postgres/9.0-pgdg/lib/64:/lib:/usr/lib
TERM=xterm
PWD=/export/home/postgres
TZ=US/Pacific


[Message I get when I run initdb]
$ initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user
"postgres".
This user must also own the server process.

The database cluster will be initialized with locales
  COLLATE:  en_US.ISO8859-15
  CTYPE:    en_US.ISO8859-1
  MESSAGES: C
  MONETARY: en_US.ISO8859-15
  NUMERIC:  en_US.ISO8859-15
  TIME:     en_US.ISO8859-15
The default database encoding has accordingly been set to LATIN1.
initdb: encoding mismatch
The encoding you selected (LATIN1) and the encoding that the
selected locale uses (LATIN9) do not match.  This would lead to
misbehavior in various character string processing functions.
Rerun initdb and either do not specify an encoding explicitly,
or choose a matching combination.



Gary Wong
Database Administration
California Department of Transportation
(916) 445-0048
gary_wong@dot.ca.gov

Re: Postgresql 9.0.4 initdb bug on solaris 64 bit

From
Tom Lane
Date:
Gary Wong <gary_wong@dot.ca.gov> writes:
> [Environment under in the postgres account]
> $ env
> LC_MONETARY=en_US.ISO8859-15
> LC_TIME=en_US.ISO8859-15
> LC_MESSAGES=C
> LC_CTYPE=en_US.ISO8859-1
> LC_COLLATE=en_US.ISO8859-15
> LC_NUMERIC=en_US.ISO8859-15

> [Message I get when I run initdb]
> $ initdb -D /usr/local/pgsql/data
> The files belonging to this database system will be owned by user
> "postgres".
> This user must also own the server process.

> The database cluster will be initialized with locales
>   COLLATE:  en_US.ISO8859-15
>   CTYPE:    en_US.ISO8859-1
>   MESSAGES: C
>   MONETARY: en_US.ISO8859-15
>   NUMERIC:  en_US.ISO8859-15
>   TIME:     en_US.ISO8859-15
> The default database encoding has accordingly been set to LATIN1.
> initdb: encoding mismatch
> The encoding you selected (LATIN1) and the encoding that the
> selected locale uses (LATIN9) do not match.  This would lead to
> misbehavior in various character string processing functions.
> Rerun initdb and either do not specify an encoding explicitly,
> or choose a matching combination.

This is not a bug.  You've got inconsistent environment settings,
and the error message seems reasonably appropriate for that.
Try making LC_CTYPE match the rest.

            regards, tom lane