PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

errore con postgresql datababse:il server è in esecuzione localmente e accetta connessioni su socket di dominio Unix /var/run/postgresql/.s.PGSQL.5432?

La convenzione per PostgreSQL impacchettata per Debian o derivati ​​Debian come Ubuntu consiste nell'usare /var/run/postgresql come directory per i socket di dominio Unix. D'altra parte, la convenzione per le librerie client postgres auto-compilate consiste nell'usare /tmp , a meno che non sia stato configurato diversamente.

Quindi la solita causa principale di questa discrepanza tra i due è un mix di roba lato client autocompilata con pacchetti lato server precompilati (anche se client e server sono installati sulla stessa macchina, lato client e lato server sono ancora distinto e può non essere sincronizzato).

Collegamento soft da /tmp a questa directory come suggerito dal richiedente funziona tranne che il collegamento verrà perso ad ogni riavvio, perché in generale /tmp viene svuotato al riavvio.

Un'opzione migliore sarebbe aggiungere come voce in database.yml :

  • o host: /tmp se il vero percorso del socket è /tmp (server autocompilato, client compresso)

  • o host: /var/run/postgresql se il percorso del socket reale /var/run/postgresql/ (server compresso, client autocompilato).

Quando il valore nel campo host inizia con un carattere slash, la libreria postgres sa che è la posizione di una directory per i socket locali piuttosto che un nome host. Il nome del file all'interno della directory .s.PGSQL.portnumber viene generato e non deve essere specificato, solo la directory.

Un'altra possibilità è configurare i pacchetti software autocompilati il ​​più vicino possibile a Debian, sovrascrivendo le impostazioni predefinite come fanno.