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

psql:não foi possível conectar ao servidor:Arquivo ou diretório inexistente (Mac OS X)


AVISO:Se você excluir postmaster.pid sem ter certeza de que realmente não há postgres processos que o executam podem corromper permanentemente seu banco de dados . (O PostgreSQL deve excluí-lo automaticamente se o postmaster tiver saído.).

SOLUÇÃO:Isso corrigiu o problema - excluí este arquivo e tudo funcionou!
/usr/local/var/postgres/postmaster.pid

--

e aqui está como eu descobri por que isso precisava ser excluído.

  1. Eu usei o seguinte comando para ver se havia algum processo PG em execução. para mim não havia nenhum, nem consegui iniciar o servidor PG:
    ps auxw | grep post
    

  2. Procurei o arquivo .s.PGSQL.5432 que estava na mensagem de erro acima. usei o seguinte comando:
    sudo find / -name .s.PGSQL.5432 -ls
    

    isso não mostrou nada depois de pesquisar todo o meu computador, então o arquivo não existia, mas obviamente psql "queria" ou "pensei que estava lá".

  3. Dei uma olhada nos logs do meu servidor e vi o seguinte erro:
    cat /usr/local/var/postgres/server.log
    

    no final do log do servidor, vejo o seguinte erro:
    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. Seguindo o conselho na mensagem de erro, excluí o arquivo postmaster.pid no mesmo diretório que server.log. Isso resolveu o problema e consegui reiniciar.

Então, parece que meu macbook congelando e sendo reinicializado com força fez com que o Postgres pensasse que seus processos ainda estavam em execução mesmo após a reinicialização. A exclusão deste arquivo foi resolvida. Espero que isso ajude os outros! Muitas pessoas têm problemas semelhantes, mas a maioria das respostas tinha a ver com permissões de arquivo, enquanto no meu caso as coisas eram diferentes.