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.