Fejlen angiver, at psql-værktøjet ikke kan finde socket til at oprette forbindelse til din databaseserver. Enten har du ikke databasetjenesten kørende i baggrunden, eller også er socket placeret et andet sted, eller måske pg_hba.conf
skal rettes.
Trin 1:Bekræft, at databasen kører
Kommandoen kan variere afhængigt af dit operativsystem. Men på de fleste *ix-systemer ville følgende virke, det vil søge efter postgres blandt alle kørende processer
ps -ef | grep postgres
På mit system, mac osx, spytter dette ud
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
Den sidste kolonne viser den kommando, der blev brugt til at starte serveren, og mulighederne.
Du kan se på alle de tilgængelige muligheder for at starte postgres-serveren ved at bruge følgende.
man postgres
Derfra vil du se, at mulighederne -D
og -r
er henholdsvis datadir
&logfilename
.
Trin 2:Hvis postgres-tjenesten kører
Brug find
for at søge efter placeringen af socket, som skulle være et sted i /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Hvis postgres kører og accepterer stikforbindelser, bør ovenstående fortælle dig, hvor stikket er placeret. På min maskine viste det sig at være:
/tmp/.s.PGSQL.5432
Prøv derefter at oprette forbindelse via psql ved at bruge denne fils placering eksplicit, f.eks.
psql -h /tmp/ dbname
Trin 3:Hvis tjenesten kører, men du ikke kan se en socket
Hvis du ikke kan finde socket, men kan se, at tjenesten kører, skal du kontrollere, at filen pg_hba.conf tillader lokale sockets.
Gå til datadir
og du bør finde pg_hba.conf
fil.
Som standard bør du nær bunden af filen se følgende linjer:
# "local" is for Unix domain socket connections only
local all all trust
Hvis du ikke kan se den, kan du ændre filen og genstarte postgres-tjenesten.