Konventionen för PostgreSQL paketerad för Debian- eller Debian-derivat som Ubuntu är att använda /var/run/postgresql
som katalog för Unix-domänsockets. Å andra sidan är konventionen för självkompilerade postgres-klientlibs att använda /tmp
, såvida du inte har konfigurerat något annat.
Så den vanliga grundorsaken till denna oöverensstämmelse mellan båda är en blandning av självkompilerade klient-side-grejer med förkompilerade server-side-paket (även om klient och server är installerade på samma maskin, klient- och server-sida är fortfarande distinkt och kan vara osynkroniserad).
Mjuklänkning från /tmp
till denna katalog som föreslås av frågeställaren fungerar förutom att länken kommer att gå förlorad vid varje omstart, eftersom /tmp
i allmänhet töms vid omstart.
Ett bättre alternativ skulle vara att lägga till som en post i database.yml
:
-
antingen
host: /tmp
om den verkliga sockelsökvägen är/tmp
(självkompilerad server, paketerad klient) -
eller
host: /var/run/postgresql
om den verkliga sockelsökvägen/var/run/postgresql/
(paketerad server, egenkompilerad klient).
När värdet i värdfältet börjar med ett snedstreck, vet postgres-biblioteket att det är platsen för en katalog för lokala uttag snarare än ett värdnamn. Filnamnet i katalogen .s.PGSQL.portnumber
genereras och får inte anges, bara katalogen.
En annan möjlighet är att konfigurera de egenkompilerade programvarupaketen så nära Debian som möjligt, och åsidosätta standardinställningarna som de gör.