sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL:Hvorfor kan psql ikke oprette forbindelse til serveren?

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.



  1. Konvertering af en dato i MySQL fra strengfelt

  2. PL/SQL Stærk Ref Cursor Med Brugerdefineret Record Datatype

  3. SQL Between-sætning med strenge kolonner

  4. Sådan tilføjer du standardbegrænsning til eksisterende kolonner i SQL Server-tabel - SQL Server / TSQL selvstudium, del 91