sql >> Base de Datos >  >> RDS >> PostgreSQL

psql:no se pudo conectar al servidor:no existe tal archivo o directorio (Mac OS X)

ADVERTENCIA:Si elimina postmaster.pid sin asegurarse de que realmente no hay postgres procesos que lo ejecutan, podrían corromper permanentemente su base de datos . (PostgreSQL debería eliminarlo automáticamente si el postmaster ha salido).

SOLUCIÓN:Esto solucionó el problema:¡borré este archivo y todo funcionó!

/usr/local/var/postgres/postmaster.pid

--

y así es como descubrí por qué esto necesitaba ser eliminado.

  1. Usé el siguiente comando para ver si había algún proceso PG en ejecución. para mi no hubo ninguno, ni siquiera pude iniciar el servidor PG:

    ps auxw | grep post
    
  2. Busqué el archivo .s.PGSQL.5432 que estaba en el mensaje de error anterior. usé el siguiente comando:

    sudo find / -name .s.PGSQL.5432 -ls
    

    esto no mostró nada después de buscar en toda mi computadora, por lo que el archivo no existía, pero obviamente psql "lo quería" o "pensé que estaba allí".

  3. Eché un vistazo a los registros de mi servidor y vi el siguiente error:

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

    al final del registro del servidor veo el siguiente error:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
    
  4. Siguiendo el consejo del mensaje de error, eliminé el archivo postmaster.pid en el mismo directorio que server.log. Esto resolvió el problema y pude reiniciar.

Por lo tanto, parece que mi macbook se congeló y se reinició de forma forzada hizo que Postgres pensara que sus procesos aún se estaban ejecutando incluso después del reinicio. Eliminación de este archivo resuelto. ¡Espero que esto ayude a otros! Mucha gente tiene problemas similares, pero la mayoría de las respuestas tenían que ver con los permisos de archivo, mientras que en mi caso las cosas eran diferentes.