O aplicativo Postgres tenta usar o arquivo de soquete incorreto

4

Eu tenho um servidor postgres local em execução (no Ubuntu Linux). Está escutando através de um arquivo de soquete:

$ ls -la /var/run/postgresql/
total 8
drwxrwsrwx  2 postgres postgres  100 2011-04-15 19:06 .
drwxr-xr-x 26 root     root     1100 2011-04-15 19:12 ..
-rw-------  1 postgres postgres    5 2011-04-15 19:06 8.4-main.pid
srwxrwxrwx  1 postgres postgres    0 2011-04-15 19:06 .s.PGSQL.5433
-rw-------  1 postgres postgres   34 2011-04-15 19:06 .s.PGSQL.5433.lock

Eu posso conectar-me ao servidor bem na linha de comando:

$ psql -d gis -U rory
psql (8.4.7)
Type "help" for help.

gis=# \q
$ psql -d gis
psql (8.4.7)
Type "help" for help.

 gis=# \q

Estou tentando usar o osm2pgsql , um aplicativo do Projeto OpenStreetMap , que importa dados para um banco de dados pgsql.

No entanto, o erro que recebo é:

$ ./osm2pgsql/osm2pgsql -m -d gis -U rory ../data.osm.bz2 
osm2pgsql SVN version 0.70.5

Connection to database failed: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Notavelmente, ele está tentando usar o arquivo de soquete .s.PGSQL.5432 , que não existe, enquanto o nome do arquivo real do soquete é .s.PGSQL.5433 , os nomes dos arquivos são quase exatamente os mesmos.

Por que está usando o nome de arquivo incorreto e como faço para usar o correto?

    
por Rory 15.04.2011 / 20:37

2 respostas

6

Parece que seu servidor PostgreSQL foi configurado para escutar na porta 5433, em vez do padrão 5432. Seu aplicativo cliente Postgres está assumindo o padrão e, portanto, não está localizando o soquete. Tente definir a variável de ambiente PGPORT para 5433 antes de executar seu aplicativo. Por exemplo:

PGPORT=5433 ./osm2pgsql/osm2pgsql -m -d gis -U rory ../data.osm.bz2
    
por 15.04.2011 / 21:48
0

Para mim, o que funcionou para corrigir esse erro foi adicionar -H localhost ao comando (mesmo que intuitivamente, eu não deveria)

ou seja:

 osm2pgsql -H localhost -s -d foo switzerland-latest.osm.pbf

Ressalva: Estou usando a porta padrão postgres 5432 embora

    
por 03.06.2014 / 14:29