Konventionen for PostgreSQL pakket til Debian eller Debian-derivater såsom Ubuntu er at bruge /var/run/postgresql
som bibliotek for Unix-domæne-sockets. På den anden side er konventionen for selvkompilerede postgres klient libs at bruge /tmp
, medmindre andet er konfigureret selv.
Så den sædvanlige årsag til dette misforhold mellem begge er en blanding af selvkompilerede klientside-ting med prækompilerede server-side-pakker (selvom klient og server er installeret på den samme maskine, klient- og serverside er stadig tydelig og kan være ude af synkronisering).
Soft-linking fra /tmp
til denne mappe som foreslået af spørgeren virker bortset fra at linket vil gå tabt ved hver genstart, fordi generelt /tmp
tømmes ved genstart.
En bedre mulighed ville være at tilføje som en post i database.yml
:
-
enten
host: /tmp
hvis den rigtige socket-sti er/tmp
(selvkompileret server, pakket klient) -
eller
host: /var/run/postgresql
hvis den rigtige socketsti/var/run/postgresql/
(pakket server, selvkompileret klient).
Når værdien i værtsfeltet starter med en skråstreg, ved postgres-biblioteket, at det er placeringen af en mappe til lokale sockets snarere end et værtsnavn. Filnavnet inde i mappen .s.PGSQL.portnumber
er genereret og må ikke angives, kun mappen.
En anden mulighed er at konfigurere de selvkompilerede softwarepakker så tæt som muligt på Debian, og tilsidesætte standardindstillingerne, som de gør.