PostgreSQL no se ejecuta en Mac

55

El error en su totalidad lee:

psql: no se pudo conectar al servidor: no existe tal archivo o directorio. ¿El servidor se ejecuta localmente y acepta conexiones en el socket de dominio Unix "/tmp/.s.PGSQL.5432"?

Esta es la segunda vez que configuro Postgresql a través de Homebrew en mi Mac, y no tengo idea de lo que está sucediendo. Anteriormente, había estado funcionando. En algún momento, debo haber ingresado un comando que arruinó las cosas. No estoy seguro. Ahora, cada vez que ingreso un comando SQL desde la línea de comando, recibo el mensaje anterior. Ejecuté un comando para verificar si el servidor se está ejecutando, y aparentemente no lo está. Si intento iniciar el servidor usando

$ postgres -D / usr / local / pgsql / data

Recibo el siguiente error:

postgres no puede acceder al archivo de configuración del servidor "/usr/local/pgsql/data/postgresql.conf": No existe tal archivo o directorio

Desinstalé y reinstalé Postgresql a través de Homebrew, pero el problema persiste. Estoy completamente perdido en cuanto a cómo hacer que esto funcione. Cualquier ayuda sería apreciada.

Michael P.
fuente

Respuestas:

52

El problema también se puede atribuir a un proceso bloqueado que dejó postmaster.pidatrás el archivo.

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql
demisx
fuente
44
En MacOSX, esta respuesta me salvó. Tuve el mismo error que OP después de que mi computadora se reiniciara. El brew servicescomando no fue útil porque parecían que todo funcionaba. Eliminarlo postmaster.pides lo que finalmente hizo que todo volviera a funcionar. ¡Gracias!
vinhboy
1
Esto me pasó a mí también. El bloqueo duro de Mac OS X provocó un reinicio, después de que Postgres no apareció. El inicio / detención / reinicio de los servicios de preparación no funciona, debe eliminar manualmente el archivo pid.
Matthijs
La forma recomendada sería ejecutar Postgres en un contenedor acoplable, por supuesto. Muy fácil de iniciar y todo se limpia cuando se cierra un contenedor. Yo diría que ejecutar cualquier aplicación de terceros en un contenedor docker debería ser de facto hoy en día.
Demisx
43

La respuesta está aquí .

Ejecute este comando para iniciar manualmente el servidor:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Michael P.
fuente
14

Estaba obteniendo lo mismo

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

bucle de Homebrew instalar / iniciar / detener / reiniciar en vano ...

Finalmente, brew postgresql-upgrade-databasefuncionó.

Parece que estaba en 9.6 en lugar de 10.4, y algo que mi último reinicio de App Store reinició todos mis servidores de bases de datos ...

senbenito
fuente
esto funcionó para mí
davideghz
Eso brew postgresql-upgrade-databasees lo que me faltaba. Gracias por señalar eso.
Corin
Trabajó para mí, gracias!
Erwin Rooijakkers
He probado todas las soluciones. Pero este es el único que funcionó para mí. Sería genial saber si alguien podría explicar por qué esto lo solucionó por completo.
JohnnyQ
11

Acabo de resolver el mismo problema. Es sólo porque me olvidé a funcionar correctamente antes de su uso.

Para una instalación pura postgresql en Mac OS, el proceso será (usando el comando brew ):

brew install postgresql

luego, si desea ejecutar automáticamente postgresqlal iniciar sesión:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

o simplemente quieres ejecutarlo cuando quieras:

postgres -D /usr/local/var/postgres

Si su caso es más complicado, vamos a brew uninstall postgresqlrehacer estos pasos.

¡Espero eso ayude!

Hoang Le
fuente
1
Actualización: para postgres instalados en Homebrew, brew services start postgresqlahora es la forma preferida de iniciar postgres al iniciar sesión
Henry
5
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket"/var/pgsql_socket/.s.PGSQL.5432"?

Seguí recibiendo el error anterior y ninguna de las soluciones anteriores funcionó para mí. Finalmente, la siguiente solución resolvió mi problema en Mac OS X

Instalar postgres usando brew

brew install postgres

Instalar servicios de preparación

brew tap homebrew/services

Para iniciar postgres como un servicio en segundo plano

brew services start postgresql

Para detener postgres manualmente

brew services stop postgresql

También podemos usar los servicios de preparación para reiniciar Postgres

brew services restart postgresql
Sudharshan
fuente
2

Esto sucede cuando el servidor postgres no se está ejecutando. Pasos para instalar Postgres correctamente a través de Homebrew en MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Esto inicializa postgres para usar el directorio dado como el directorio de la base de datos. Normalmente no se recomienda utilizar el directorio de usuarios para el almacenamiento de la base de datos. Edite el archivo sudoers para agregar initdb y comandos similares y luego ejecute initdb en / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Después de obtener éxito con el paso 2, se le solicitará que ejecute el paso 3. Este comando inicia el servidor manualmente.]

Souvik Das
fuente
1

Acabo de descomentar en /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

y reiniciar postgres. Y para mi funciona.

Roxana
fuente
1

Recientemente pasé por un problema similar. solo hay otro problema y solución. Estaba ejecutando 2 versiones de postgres (9.3 y 9.6) aunque el servidor estaba configurado para ejecutarse en 2 puertos diferentes, pero de alguna manera el comando psql en bash intenta conectarse al puerto predeterminado 5432. Asegúrese de verificar si su servidor se está ejecutando y verifique la configuración de su puerto, luego ejecute psql -p <port> postgres. La solución está cambiando el puerto.

lluvia
fuente
1

Estuve buscando mucho tiempo, y esta fue la solución más limpia y ordenada:

Recientemente actualicé Postgres de 9.2 a 9.3 usando brew upgrade postgres. El proceso fue sencillo y pg_upgrade es una herramienta muy útil.

Sin embargo, surgieron problemas una vez que intenté ejecutar las especificaciones que necesitaban para conectarme a Postgres. Aunque Postgres definitivamente se estaba ejecutando, de repente estaba obteniendo:

no se pudo conectar al servidor: No existe tal archivo o directorio (PG :: ConnectionBad) ¿El servidor se ejecuta localmente y acepta conexiones en el socket de dominio Unix "/var/pgsql_socket/.s.PGSQL.5432"? El problema era que la nueva versión de Postgres escucha en /tmp/.s.PGSQL.5432 en su lugar. Podría haber jugado con la configuración y hacer que Postgres usara el socket de dominio que era anteriormente, o haberle dicho explícitamente a Rails cómo conectarse, pero ambos enfoques parecían un trabajo que no debería tener que hacer. En ningún momento le había dicho a Rails que se conectara a postgres en ese camino, Rails lo había asumido, y ahora sus suposiciones estaban equivocadas.

La solución es simple, aunque un poco sorprendente. Cuando instala la gema 'pg', detecta qué versión de Postgres está instalada y establece la ruta del socket del dominio de manera adecuada. La solución es tan simple como reinstalar la gema. $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/

jalebaro
fuente
1
Por favor, editar su respuesta por lo que proporciona un valor si el enlace deja de funcionar . Puede encontrar orientación sobre cómo hacer esto correctamente en Cómo hacer referencia al material escrito por otros . Gracias.
Paul White
0

actualizarlo usando el comando

  brew postgresql-upgrade-database

si tiene el siguiente error , no se encontró el comando 'brew', pero se puede instalar con: sudo apt install linuxbrew-wrapper

luego instálelo usando el comando

 sudo apt install linuxbrew-wrapper
Nadeem Qasmi
fuente
0

Para mí, esto también sucedió después de un reinicio y ninguna de las soluciones anteriores funcionó para mí. Después de verificar el registro del servidor de esta manera:

tail /usr/local/var/postgres/server.log

Me di cuenta:

    2019-11-06 11:04:31.797 CET [85029] FATAL:  data directory "/usr/local/var/postgres" has invalid permissions
2019-11-06 11:04:31.797 CET [85029] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

Así que cambié los permisos de esta manera:

sudo chmod 700  /usr/local/var/postgres

y todo volvió a funcionar y la vida fue buena.

Gijsthebookie
fuente
-3

Los siguientes pasos me ayudan:

brew desinstalar postgresql brew instalar postgresql brew postgresql-upgrade-database

BMA88
fuente