
wlucena
(usa Outra)
Enviado em 14/12/2012 - 11:03h
O erro ocorre porque o comando PSQL na verdade é uma espécie de shell script que configura uma variável de ambiente para uma lib 32 ou 64 bits conforme versão do SO para somente depois chamar o executável.
Ambiente com problema:
SO: Red Hat Linux 6.3 - 64 bits
Postgres: 9.1.3.1
Causa:
Até a versão anterior, o SO instalava apenas uma das libs de acordo com a versão do SO. A partir da versão 6.3, o SO passou a instalar as duas libs.
Como o psql encontra as duas, devido a ordem estabelecida no psql, ele configura a variável com a lib da versão de 32 bits em um ambiente 64 bits.
Solução:
Editar (vi) o psql e comentar as linhas que fazem referência com a configuração da variável de ambiente para 32 bits.
#!/bin/bash
# If there's an OS supplied version of libreadline, try to make use of it,
# as it's more reliable than libedit, which we link with.
PLL=""
if [ -f /lib64/libreadline.so.6 ];
then
PLL=/lib64/libreadline.so.6
fi
if [ -f /lib64/libreadline.so.5 ];
then
PLL=$PLL:/lib64/libreadline.so.5
fi
#if [ -f /lib/libreadline.so.6 ];
#then
# PLL=$PLL:/lib/libreadline.so.6
#fi
if [ -f /lib/libreadline.so.5 ];
then
PLL=$PLL:/lib/libreadline.so.5
fi
# Get the PG bin directory path relative to psql caller script.
PG_BIN_PATH=`dirname "$0"`
if [ -z "$PLL" ];
then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PG_BIN_PATH/../lib "$PG_BIN_PATH/psql.bin" "$@"
else
LD_PRELOAD=$PLL LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PG_BIN_PATH/../lib "$PG_BIN_PATH/psql.bin" "$@"
fi
---------------------------------------------------------------
CRÉDITOS DA SOLUÇÃO: Equipe de SO/Rede e BD de onde trabalho.