PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

error with postgresql datababse :O servidor está executando localmente e aceitando conexões no soquete de domínio Unix /var/run/postgresql/.s.PGSQL.5432?


A convenção para o PostgreSQL empacotado para o Debian ou derivados do Debian como o Ubuntu é usar /var/run/postgresql como o diretório para soquetes de domínio Unix. Por outro lado, a convenção para bibliotecas de cliente postgres auto-compiladas é usar /tmp , a menos que autoconfigurado de outra forma.

Portanto, a causa raiz usual dessa incompatibilidade entre ambos é uma mistura de coisas autocompiladas do lado do cliente com pacotes pré-compilados do lado do servidor (mesmo que o cliente e o servidor estejam instalados na mesma máquina, o lado do cliente e o lado do servidor são ainda distinto e pode estar fora de sincronia).

Soft-linking de /tmp para este diretório como sugerido pelo solicitante funciona, exceto que o link será perdido a cada reinicialização, porque em geral /tmp é esvaziado na reinicialização.

Uma opção melhor seria adicionar como uma entrada em database.yml :

  • ou host: /tmp se o caminho real do soquete for /tmp (servidor autocompilado, cliente empacotado)

  • ou host: /var/run/postgresql se o caminho real do soquete /var/run/postgresql/ (servidor empacotado, cliente auto-compilado).

Quando o valor no campo host começa com um caractere de barra, a biblioteca postgres sabe que é o local de um diretório para soquetes locais em vez de um nome de host. O nome do arquivo dentro do diretório .s.PGSQL.portnumber é gerado e não deve ser especificado, apenas o diretório.

Outra possibilidade é configurar os pacotes de software autocompilados o mais próximo possível do Debian, substituindo os padrões como eles fazem.