Postgres: no se pudieron crear sockets TCP / IP

14

Estoy ejecutando una aplicación rails en desarrollo con postgresql 9.3. Cuando intenté iniciar el servidor de pasajeros hoy, obtuve:

PG::ConnectionBad - could not connect to server: Connection refused
    Is the server running on host "localhost" (217.74.65.145) and accepting
    TCP/IP connections on port 5432?

No es gran cosa, pensé, eso sucedió antes. Reiniciar postgres siempre resolvió el problema. Entonces corrí sudo service postgresql restarty obtuve:

 * Restarting PostgreSQL 9.3 database server
 * The PostgreSQL server failed to start. Please check the log output:
2014-06-11 10:32:41 CEST LOG:  could not bind IPv4 socket: Cannot assign requested address
2014-06-11 10:32:41 CEST HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2014-06-11 10:32:41 CEST WARNING:  could not create listen socket for "localhost"
2014-06-11 10:32:41 CEST FATAL:  could not create any TCP/IP sockets
...fail!

Mis postgresql.confpuntos a los valores predeterminados: localhosty puerto 5432. Intenté cambiar el puerto pero el mensaje de error es el mismo (excepto el cambio de puerto).

Ambos ps aux | grep postgresqly ps aux | grep postmasterno devuelven nada.

EDITAR:

En postgresql.confCambié listen_addressesa en 127.0.0.1lugar de localhoste hizo el truco, el servidor se reinició. También tuve que editar la configuración de db de mis aplicaciones y señalar en 127.0.0.1lugar de localhost. Sin embargo, la pregunta es ahora, ¿por qué se considera localhost ser 217.74.65.145y no 127.0.0.1?

Esa es mi /etc/hosts:

127.0.0.1   local
127.0.1.1   jacek-X501A1
127.0.0.1   something.name.non.example.com
127.0.0.1   company.something.name.non.example.com
Jacka
fuente
cualquier salida de sudo netstat -anlp | grep 5432?
Flup
1
Si va a ofuscar sus datos, hágalo responsablemente y utilícelo example.comcomo nombre de dominio.
Jenny D

Respuestas:

12

Tu /etc/hostsestá roto. La primera línea debería leer

127.0.0.1   localhost something.name.non.example.com company.something.name.non.example.com
Jenny D
fuente
Nota para los lectores futuros que incluso si hacer una entrada localhost en /etc/hosts, otros factores pueden causar una respuesta DNS diferente cuando una búsqueda DNS de localhostse ejecuta realmente. Ver stackoverflow.com/a/47824848/5419599 .
Comodín
@Wildcard No sé a qué sistema operativo se aplicaría esa respuesta (si corresponde). Ciertamente no tiene mucho sentido en Linux.
kasperd
1
@kasperd Supongo que si tienes el pedido en dns fileslugar de files dnsen nsswitch.conf y tienes un servidor de nombres que resuelve localhost, podrías meterte en problemas. Pero eso me parece muy poco probable ...
Jenny D
@JennyD La respuesta vinculada anteriormente sugiere usar nslookuppara verificar. Pero el nslookupcomando en Linux no usa nsswitch.confy /etc/hostsen primer lugar. Y en cuanto dns filesa la configuración, eso me suena a pedirme problemas.
kasperd
1
@kasperd estuvo de acuerdo: sería bastante alto en la escala de "es tu propia maldita culpa" ...
Jenny D
0

Entiendo que esta pregunta está respondida, pero para aquellos que todavía tienen el error, la razón podría ser que algún otro proceso ya lo ha iniciado. Por ejemploHomebrew en el arranque del sistema.

Si ese es el caso, intente detenerlo:
brew services stop postgres

YTerle
fuente