PostgreSQL non funziona su Mac


56

L'errore nella sua interezza recita:

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

Questa è la seconda volta che imposto Postgresql tramite Homebrew sul mio Mac e non ho idea di cosa stia succedendo. In precedenza, aveva funzionato. Ad un certo punto, devo aver inserito un comando che ha incasinato le cose. Non ne sono sicuro. Ora, ogni volta che inserisco un comando SQL dalla riga di comando, ricevo il messaggio sopra. Ho eseguito un comando per verificare se il server è in esecuzione e apparentemente non lo è. Se provo ad avviare il server usando

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

Ricevo il seguente errore:

postgres non può accedere al file di configurazione del server "/usr/local/pgsql/data/postgresql.conf": nessun file o directory

Ho disinstallato e reinstallato Postgresql tramite Homebrew, ma il problema persiste. Sono completamente in perdita su come farlo funzionare. Qualsiasi aiuto sarebbe apprezzato.

Risposte:


53

Il problema può anche essere attribuito a un processo bloccato che ha lasciato il postmaster.pidfile alle spalle.

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

4
Su MacOSX, questa risposta mi ha salvato. Ho avuto lo stesso errore di OP dopo il riavvio del computer. Il brew servicescomando non è stato utile perché ha fatto sembrare che tutto funzionasse. La rimozione di postmaster.pidè ciò che finalmente ha fatto funzionare di nuovo tutto. Grazie!
Vinhboy,

1
Questo è successo anche a me. L'arresto anomalo di Mac OS X ha causato un riavvio, dopo che Postgres non si è verificato. brew services start / stop / restart non funziona, devi rimuovere manualmente il file pid.
Matthijs

Il modo consigliato sarebbe di eseguire Postgres in un container mobile, ovviamente. Molto facile da avviare e tutto viene ripulito quando un contenitore viene chiuso. Direi che eseguire qualsiasi app di terze parti in un container docker dovrebbe essere di fatto al giorno d'oggi.
Demisx

43

La risposta è qui .

Esegui questo comando per avviare manualmente il server:

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

14

Stavo diventando lo stesso

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

loop di Homebrew installa / avvia / ferma / riavvia inutilmente ...

Alla fine ha brew postgresql-upgrade-databasefunzionato.

Sembra che ero in 9.6 invece di 10.4, e qualcosa il mio ultimo riavvio dell'App Store ha riavviato tutti i miei server di database ...


questo ha funzionato per me
davideghz

Questo brew postgresql-upgrade-databaseè quello che mi mancava. Grazie per la segnalazione.
Corin

Ha funzionato per me grazie!
Erwin Rooijakkers,

Ho provato tutte le soluzioni. Ma questo è l'unico che ha funzionato per me. Sarebbe bello sapere se qualcuno potesse spiegare perché questo ha risolto completamente.
JohnnyQ,

11

Ho appena risolto lo stesso problema. È solo perché ho dimenticato di eseguirlo correttamente prima dell'uso.

Per l'installazione pura postgresql su Mac OS, il processo sarà (usando il comando brew ):

brew install postgresql

quindi se si desidera eseguire automaticamente postgresqlal login:

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

oppure vuoi solo eseguirlo ogni volta che vuoi:

postgres -D /usr/local/var/postgres

Se il tuo caso è più complicato, brew uninstall postgresqlripetiamo questi passaggi.

Spero che sia d'aiuto!


1
Aggiornamento: per Postgres installato in Homebrew, brew services start postgresqlè ora il modo preferito di avviare Postgres al login
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"?

Ho continuato a ricevere l'errore sopra e nessuna delle soluzioni sopra ha funzionato per me. Alla fine la seguente soluzione ha risolto il mio problema su Mac OS X.

Installa postgres usando brew

brew install postgres

Installa i servizi di infusione

brew tap homebrew/services

Per avviare Postgres come servizio in background

brew services start postgresql

Per interrompere manualmente postgres

brew services stop postgresql

Possiamo anche utilizzare i servizi di infusione per riavviare Postgres

brew services restart postgresql

2

Questo succede quando il server Postgres non è in esecuzione. Passaggi per installare correttamente Postgres via Homebrew su MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Questo inizializza Postgres per usare la directory data come directory del database. Normalmente non è consigliabile utilizzare la directory utente per l'archiviazione del database. Modifica il file sudoers per aggiungere initdb e comandi simili, quindi esegui initdb su / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Dopo aver avuto successo con il passaggio 2, verrà richiesto di eseguire il passaggio 3. Questo comando avvia manualmente il server.]


2

Ha funzionato per me. Cambia la tua directory postgresql in base alla versione del tuo sistema.

Percorso comune rm /usr/local/var/postgres/postmaster.pid

ma per postgresql@9.6 nel mio percorso di sistema è rm /usr/local/var/postgresql@9.6/postmaster.pid

riavvia postgresql@9.6- brew services restart postgresql@9.6


sì questo è quello che funziona!
PirateApp il

1

Ho appena commentato in /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

e riavvia postgres. E per me funziona.


1

di recente ho riscontrato un problema simile. c'è solo un altro problema e soluzione. Stavo eseguendo 2 versioni di postgres (9.3 e 9.6) anche se il server era impostato per funzionare su 2 porte diverse, ma alcuni come il comando psql su bash tenta di connettersi alla porta 5432 predefinita. Assicurati di controllare se il tuo server è in esecuzione e controlla le impostazioni della porta, quindi esegui psql -p <port> postgres. La soluzione sta cambiando porta.


1

Stavo cercando da molto tempo, e questa era la soluzione più pulita e ordinata:

Recentemente ho aggiornato Postgres da 9.2 a 9.3 usando bregr postgres. Il processo è stato semplice e pg_upgrade è uno strumento molto utile.

Tuttavia, quando ho provato a eseguire le specifiche necessarie per connettermi a Postgres ho riscontrato problemi. Anche se Postgres stava decisamente correndo, improvvisamente stavo ottenendo:

impossibile connettersi al server: nessun file o directory (PG :: ConnectionBad) Il server è in esecuzione localmente e accetta connessioni sul socket del dominio Unix "/var/pgsql_socket/.s.PGSQL.5432"? Il problema era che la nuova versione di Postgres ascolta invece /tmp/.s.PGSQL.5432. Avrei potuto fare confusione con la configurazione e fare in modo che Postgres usasse il socket di dominio che era in precedenza, o dire a Rails esplicitamente come connettersi, ma entrambi quegli approcci sembravano un lavoro che non avrei dovuto fare. In nessun momento avevo detto a Rails di collegarsi a Postgres su quel percorso, Rails l'aveva ipotizzato, e ora i suoi presupposti erano sbagliati.

La correzione è semplice, anche se un po 'sorprendente. Quando installi la gemma 'pg', rileva quale versione di Postgres è installata e imposta il percorso del socket di dominio in modo appropriato. La soluzione è semplice come reinstallare la gemma. $ gem uninstall pg $ cd my-rails-app/ $ bundle install

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


1
Si prega di modificare la risposta in modo che fornisce un valore se il collegamento smette di funzionare . Puoi trovare una guida su come farlo correttamente in Come fare riferimento a materiale scritto da altri . Grazie.
Paul White

0

aggiornalo usando il comando

  brew postgresql-upgrade-database

se hai il seguente errore Il comando 'brew' non è stato trovato, ma può essere installato con: sudo apt install linuxbrew-wrapper

quindi installarlo utilizzando il comando

 sudo apt install linuxbrew-wrapper

0

Per me questo è accaduto anche dopo un riavvio e nessuna delle soluzioni di cui sopra ha funzionato per me. Dopo aver verificato il registro del server in questo modo:

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

Ho notato:

    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).

Quindi ho modificato le autorizzazioni in questo modo:

sudo chmod 700  /usr/local/var/postgres

e tutto ha funzionato di nuovo e la vita è stata buona.


-3

I passaggi seguenti mi aiutano:

brew disinstalla postgresql brew installa postgresql brew postgresql-upgrade-database

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.