Felet säger att psql-verktyget inte kan hitta socket för att ansluta till din databasserver. Antingen har du inte databastjänsten igång i bakgrunden, eller så finns sockeln någon annanstans, eller kanske pg_hba.conf
måste fixas.
Steg 1:Kontrollera att databasen körs
Kommandot kan variera beroende på ditt operativsystem. Men på de flesta *ix-system skulle följande fungera, det kommer att söka efter postgres bland alla pågående processer
ps -ef | grep postgres
På mitt system, mac osx, spottar detta ut
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 sista kolumnen visar kommandot som används för att starta servern och alternativen.
Du kan titta på alla tillgängliga alternativ för att starta postgres-servern genom att använda följande.
man postgres
Därifrån ser du att alternativen -D
och -r
är respektive datadir
&logfilename
.
Steg 2:Om postgres-tjänsten körs
Använd find
för att söka efter platsen för socket, som borde vara någonstans i /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Om postgres är igång och accepterar uttagsanslutningar, bör ovanstående berätta var uttaget finns. På min maskin visade det sig vara:
/tmp/.s.PGSQL.5432
Försök sedan att ansluta via psql med den här filens plats explicit, t.ex.
psql -h /tmp/ dbname
Steg 3:Om tjänsten körs men du inte ser något uttag
Om du inte kan hitta socket men ser att tjänsten körs, verifiera att filen pg_hba.conf tillåter lokala sockets.
Bläddra till datadir
och du bör hitta pg_hba.conf
fil.
Som standard, nära botten av filen bör du se följande rader:
# "local" is for Unix domain socket connections only
local all all trust
Om du inte ser den kan du ändra filen och starta om postgres-tjänsten.