Centos Postgres Falha ao iniciar

1

Eu tenho o CentOS 6.7 instalado no meu servidor:

bash-4.1# uname -r
2.6.32-573.18.1.el6.x86_64

Após a reinicialização do servidor, meu servidor PostgreSQL 9.6 não está iniciando devido ao problema de localidade.

Aqui está a mensagem de erro de log: pgstartup.log

< 2017-01-26 16:33:08.115 IST > LOG:  invalid value for parameter "lc_messages": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > LOG:  invalid value for parameter "lc_monetary": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > LOG:  invalid value for parameter "lc_numeric": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > LOG:  invalid value for parameter "lc_time": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > FATAL:  configuration file "/var/lib/pgsql/9.6/data/postgresql.conf" contains errors

Espera-se que o código de idioma "en_US.UTF-8" esteja disponível no sistema. Eu verifiquei e está de fato disponível.

bash-4.1# locale -a | grep en_US
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
en_US
en_US.UTF-8
en_US.iso88591
en_US.iso885915
en_US.utf8

Então, eu comentei as seguintes linhas do arquivo postgresql.conf:

#lc_messages = 'en_US.UTF-8'                    # locale for system error message
                                        # strings
#lc_monetary = 'en_US.UTF-8'                    # locale for monetary formatting
#lc_numeric = 'en_US.UTF-8'                     # locale for number formatting
#lc_time = 'en_US.UTF-8'                                # locale for time formatting

Depois de comentar as linhas conforme acima, o servidor está ficando fixo, mas não consegue acessar o servidor, e está chorando o seguinte erro:

bash-4.1$ psql
psql: FATAL:  database locale is incompatible with operating system
DETAIL:  The database was initialized with LC_COLLATE "en_US.UTF-8",  which is not recognized by setlocale().
HINT:  Recreate the database with another locale or install the missing locale.

Agora eu tenho a localidade no sistema que é exigida pelo postgres, e depois também o seu choro. Não sei exatamente onde está o problema.

Observação: esse problema gera reinicialização após o servidor.

    
por Anil Bharadia 26.01.2017 / 13:18

1 resposta

1

Eu encontrei a solução para este problema.

Na verdade, as localidades são fornecidas pela biblioteca Glibc. No servidor, a versão do Glibc era 2.12.

Por algum motivo, precisávamos da versão 2.14 e não era possível atualizar 2.12 para 2.14 via yum, já que o yum estava dizendo sua versão mais recente.

Então, compilamos manualmente os binários de origem e de criação 2.14.

e alterou o link de 2.12 para 2.14 e criou essa bagunça.

Solução: reverti o link sym para a versão original do 2.12.

Moral: nunca estrague a glibc, não desta forma apontando links sym para diferentes versões.

    
por 03.02.2017 / 07:22