psql: impossibile connettersi al server: nessun file o directory (Mac OS X)


247

Al riavvio del mio Mac ho ricevuto il temuto errore Postgres:

psql: 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"?

La ragione per cui è successo è perché il mio macbook si è bloccato completamente a causa di un problema non correlato e ho dovuto eseguire un riavvio forzato utilizzando il pulsante di accensione. Dopo il riavvio, non ho potuto avviare Postgres a causa di questo errore.


1
Come controllo di
integrità

1
Quando lasci la risposta, prova a spiegare PERCHÉ questo sta accadendo o come funziona il sistema Postgres, quindi non stiamo solo provando cose a caso.
Nick Res,

6
brew reinstall postgresql stackoverflow.com/a/39781473/6086226 ha funzionato per me
Derk Jan Speelman

brew reinstallare postgresql questo ha risolto il mio problema
Ajay Kumar,

Risposte:


422

ATTENZIONE: se si elimina postmaster.pid senza assicurarsi che non vi siano realmente postgresprocessi in esecuzione, il database potrebbe essere danneggiato in modo permanente . (PostgreSQL dovrebbe eliminarlo automaticamente se il postmaster è uscito.).

SOLUZIONE: il problema è stato risolto: ho eliminato questo file e tutto ha funzionato!

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

-

ed ecco come ho capito perché questo doveva essere cancellato.

  1. Ho usato il seguente comando per vedere se c'erano processi PG in esecuzione. per me non ce n'erano, non potevo nemmeno avviare il server PG:

    ps auxw | grep post
  2. Ho cercato il file .s.PGSQL.5432 che era nel messaggio di errore sopra. ho usato il seguente comando:

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

    questo non ha mostrato nulla dopo aver cercato su tutto il mio computer, quindi il file non esisteva, ma ovviamente psql"lo volevo" o "pensavo che fosse lì".

  3. Ho dato un'occhiata ai registri del mio server e ho visto il seguente errore:

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

    alla fine del registro del server vedo il seguente errore:

    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. Seguendo i consigli nel messaggio di errore, ho eliminato il file postmaster.pid nella stessa directory di server.log. Questo ha risolto il problema e sono stato in grado di riavviare.

Quindi, sembra che il mio macbook si sia bloccato e sia stato riavviato con difficoltà facendo pensare a Postgres che i suoi processi fossero ancora in esecuzione anche dopo il riavvio. Eliminazione di questo file risolta. Spero che questo aiuti gli altri! Molte persone hanno problemi simili, ma la maggior parte delle risposte ha avuto a che fare con le autorizzazioni dei file, mentre nel mio caso le cose erano diverse.


9
speriamo che questa risposta finisca per aiutare qualcun altro e ringraziare la persona che l'ha votata. nonostante il moderatore che ha contrassegnato questa domanda come duplicata sia unica e utile. grazie overflow dello stack per il fantastico sito e gli esperti qui per la condivisione!
FireDragon,

2
Solo FWIW, eliminare postmaster.pid è pericoloso, devi essere davvero sicuro che non ci siano postgresprocessi in esecuzione prima di farlo.
Craig Ringer,

21
Bella risposta. Grazie per aver pubblicato l'intero processo anziché solo il comando potenzialmente distruttivo!
dojosto,

3
Concordato. La risposta su postmaster.pid è buona, ma ogni fase del processo per capire se / dove è in esecuzione postgres è preziosa . Grazie!
Clinton,

11
Il mio log postgres su macos era su /usr/local/var/log/postgres.log.
Ryantuck,

172

Nessuna delle precedenti ha funzionato per me. Ho dovuto reinstallare Postgres nel modo seguente:

  • Disinstallare postgresql con brew: brew uninstall postgresql
  • brew doctor (correggi qualunque cosa sia qui)
  • brew cleanup
  • Rimuovi tutte le cartelle di Postgres:

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • Reinstallare postgresql con brew: brew install postgresql

  • Avvia il server: brew services start postgresql
  • Ora dovresti creare i tuoi database ... ( createdb)

4
Ha funzionato per me, ma non ho dovuto rimuovere un database reale e non avevo una cartella nel Supporto applicazioni. Penso che il punto fosse che alcuni elementi della birra avevano interrotto i collegamenti simbolici durante l'installazione di Postgres. Risolverli e installare nuovamente Postgres ha risolto il problema. Grazie!
Kulbi,

2
Né questa né la risposta migliore hanno funzionato per me, fino a quando non ho corso anche iobrew postgresql-upgrade-database
ErikAGriffin il

Questi hanno funzionato per me, tranne per il fatto che non dovevo eliminare i vecchi dati.
Amal Antony,

Per confermare: questo elimina tutti i tuoi database, giusto? Sono stato in grado di cavarmela solo con una brew reinstall postgres, confermando che l'ultimo numero della versione principale di Homebrew Postgres era lo stesso del mio attuale (rotto).
Jacob Ford,

85

Se sei su macOS e hai installato postgres tramite homebrew, prova a riavviarlo con

brew services restart postgresql

Se sei su Ubuntu, puoi riavviarlo con uno di questi comandi

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

34

Forse questo non è correlato ma appare un errore simile quando si aggiorna postgresa una versione principale usando brew; usando brew info postgresqlscoperto questo che ha aiutato:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database

4
Questo ha funzionato per me andando dalle 11 alle 12 in Catalina
nzajt, il

1
Ha funzionato anche per me
emptywalls il

15

Ecco la mia strada:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
Questo ha funzionato per me quando non è stato fatto nessun altro arresto e avvio / riavvio / reinstallazione di Postgres usando homebrew. Grazie @ smartworld-dm
Bradley

1
Questa è l'anima a cui torno sempre. Potrei aggiungere un alias che durante l'esecuzione fix-my-postgresqleseguirà questo :)
Tomas K

1
Qualche idea sul perché devo farlo ogni volta che riavvio il mio PC?
stephano,

11

se non ci sei postmaster.pidpiù e non riesci a riavviare o altro, fai questo:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

come spiegato qui inizialmente


8

Ciao mondo :)
Il modo migliore ma strano per me era fare le prossime cose.

1) Scarica postgres93.app o altra versione. Aggiungi questa app nella cartella / Applicazioni /.

2) Aggiungi una riga (comando) nel file .bash_profile(che si trova nella mia directory home):

export PATH = / Applicazioni / Postgres93.app / Contenuti / MacOS / bin /: $ PATH
È un PERCORSO psqlda Postgres93.app. La riga (comando) viene eseguita ogni volta che viene avviata la console.

3) Avvia Postgres93.appdalla /Applications/cartella. Avvia un server locale (la porta è "5432" e l'host è "localhost").

4) Dopo tutte queste manipolazioni sono stato felice di eseguire $ createuser -SRDP user_namee altri comandi e vedere che ha funzionato! Postgres93.apppuò essere fatto funzionare ad ogni avvio del sistema.

5) Inoltre, se si desidera visualizzare graficamente i database, è necessario installarli PG Commander.app. È un buon modo di vedere il tuo DB postgres come tabelle dati piuttosto carine

Naturalmente, è utile solo per il server locale. Sarò felice se queste istruzioni aiuteranno gli altri che hanno affrontato questo problema.


1
La chiave qui è l'aggiunta di Postgres al tuo percorso (passaggio 2). Questo mi ha aiutato. Se hai installato Postgres usando Homebrew, puoi aggiungerlo al tuo percorso aggiungendo la seguente riga al tuo .bash_profile: export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH- Tieni presente che il tuo numero di versione potrebbe essere diverso.
Tina,

7

Questo problema ha molte fonti e quindi molte risposte. Ho sperimentato ognuno di loro.

1) Se si verifica un arresto anomalo di qualche tipo, è probabilmente necessario rimuovere il file /usr/local/var/postgres/postmaster.pid poiché Postgres potrebbe non averlo gestito correttamente. Ma assicurati che nessun processo sia in esecuzione.

2) Craig Ringer ha sottolineato in altri post che il raggruppamento Apple di postgreSQL porta a problemi di installazione di pg gem L' impostazione della variabile di ambiente PATH è una soluzione.

3) Un'altra soluzione è disinstallare e reinstallare la gemma. Potrebbe essere necessario anche un aggiornamento della birra.

Se ti imbatti in questo post, se riesci a individuare una delle fonti, risparmierai tempo ...


3
Sono contento di averlo pubblicato. Un altro incidente e la risposta possono essere recuperati piuttosto rapidamente ...
Jerome,

6

Per me, la soluzione era semplicemente riavviare il mio computer. Ho provato per la prima volta a riavviare con i servizi Brew e quando non ha funzionato, il riavvio sembrava la migliore opzione successiva da provare prima di esaminare alcune delle soluzioni più coinvolte. Tutto ha funzionato come dovrebbe dopo.


5

Stavo affrontando un problema simile qui ho risolto questo problema come di seguito.

In realtà il processo Postgres è morto, per vedere lo stato di Postgres eseguire il seguente comando

sudo /etc/init.d/postgres status

Dirà che il processo è morto, basta avviare il processo

sudo /etc/init.d/postgres start

Grazie per la risposta, la tua risposta mi ha aiutato a risolvere lo stesso problema con alcune modifiche: sudo /etc/init.d/postgresql start
Pravitha V

4

Questo mi è successo dopo che il mio Mac (High Sierra) si è bloccato e ho dovuto riavviarlo manualmente (tenere premuto il pulsante di accensione). Tutto quello che dovevo fare per risolvere il problema era fare un riavvio pulito.


3

Il mio problema finì per essere che stavo usando la maschera antigas (un file manager di host per Mac) e non avevo una voce per localhost nel file hosts che stavo usando.

Ho aggiunto:

127.0.0.1 localhost

E questo ha risolto il mio problema.


3

Non sono del tutto sicuro del perché, ma la mia installazione di Postgres è stata un po 'rovinata e alcuni file sono stati eliminati con la visualizzazione dell'errore OP.

Nonostante sia in grado di eseguire comandi simili brew service retart postgrese visualizzare i messaggi corretti, l'errore persiste.

Ho esaminato la documentazione di Postgres e ho scoperto che il mio file /usr/local/var/postgresera completamente vuoto. Quindi ho eseguito il seguente:

initdb /usr/local/var/postgres

Sembra che alcune configurazioni abbiano avuto luogo con quel comando.

Quindi mi ha chiesto di eseguire questo:

postgres -D /usr/local/var/postgres

E questo mi ha detto che esiste già un file postmaster.pid.

Avevo solo bisogno di sapere se la birra sarebbe stata in grado di raccogliere le configurazioni che avevo appena eseguito, quindi l'ho provato.

ls /usr/local/var/postgres

Questo mi ha mostrato un file postmaster.pid. L'ho fatto brew services stop postgresqle il file postmaster.pid è scomparso. Poi l'ho fatto brew services start postgresql, e VIOLA, il file è riapparso.

Quindi sono andato avanti e ho eseguito la mia app, che in effetti ha trovato il server, tuttavia i miei database sembrano essere spariti.

Anche se so che potrebbero non essere affatto spariti, la nuova inizializzazione che ho fatto potrebbe aver creato una nuova data_area e quella vecchia non viene indicata. Dovrei guardare dove si trova e puntarlo di nuovo o semplicemente creare nuovamente i miei database.

Spero che questo ti aiuti! Leggere i documenti di Postgres mi ha aiutato molto. Odio leggere le risposte che sono come "Incolla questo in esso funziona!" perché non so che diavolo sta succedendo e perché.


2

Le cause di questo errore sono molte, quindi prima trova il tuo file di registro e controllalo per indizi. Potrebbe essere ad /usr/local/var/log/postgres.logo /usr/local/var/postgres/server.logo forse altrove. Se hai installato con Homebrew puoi trovare la posizione in ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist.


2

Ho avuto lo stesso problema. Il più delle volte, il problema è il fatto che esiste un file rimanente

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

che funziona per la maggior parte delle persone, ma il mio caso era diverso: ho provato a cercare su Google questo problema per le ultime 3 ore, ho disinstallato postresql su OSX tramite brew, ho eliminato il database, niente ha funzionato.

Alla fine, ho notato che avevo un problema con brew che ogni volta che cercavo di installare qualcosa, si apriva:

Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

o qualcosa del genere alla fine di un'installazione.

L'ho fatto semplicemente sudo chmod -R 777 /private/tmpe finalmente funziona!

Sto scrivendo questo perché potrebbe essere una soluzione per qualcun altro


1

Vai a /var/log/ ed esegui cat postgres.log Qui troverai il motivo del fallimento di Postgres. Se si tratta di un arresto intelligente, probabilmente la tua icu4cversione (libreria C ++ per Unicode) non è corretta a cui è collegata postgres. Quindi esegui i seguenti comandi.

brew upgrade brew cleanup Questo dovrebbe funzionare;)


Potrebbe dover correre in brew styleseguito se si brew cleanuprompe l'homebrew.
Olliezhu,

0

Ho dovuto cercare questo post più volte per risolvere questo problema. C'è un'altra soluzione, che si applica anche a problemi simili con altri programmi in esecuzione.

Ho appena scoperto che puoi usare i seguenti due comandi.

$ top

Questo mostrerà tutte le azioni attualmente in esecuzione con i loro numeri pid. Quando trovi postgres e il pid associato

$ kill pid_number


0

Ho appena avuto lo stesso problema che ho messo la mia macchina ( ubuntu) per l'aggiornamento e ho ottenuto l'errore seguente:

impossibile connettersi al server: nessun file o directory simile Il server è in esecuzione in locale e accetta connessioni sul socket del dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?

Dopo aver completato il processo di aggiornamento quando riavvio il mio errore di sistema sparito. E funziona come un incantesimo come prima .. Immagino che ciò sia accaduto mentre la PG stava aggiornando e un altro processo è iniziato.


0

SUPER NEWBIE ALERT: Sto solo imparando lo sviluppo web e il particolare tutorial che seguivo menzionato, devo installare Postgres ma in realtà non ho detto che devo eseguirlo anche io ... Una volta aperta l'applicazione Postgres tutto andava bene e Dandy.


0

La risposta di @Jagdish Barabari mi ha dato la chiave di cui avevo bisogno per risolverlo. Si scopre che c'erano due versioni di postgresql installate mentre solo una era in esecuzione. L'eliminazione di tutti i file postgresql e la reinstallazione dell'ultima versione hanno risolto questo problema per me.


0

Ho rimosso / usr / lib da LD_LIBRARY_PATH e ha funzionato. Stavo lavorando in Dockgrfile Postgres: alpino.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.