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

fejl med postgresql datababse :Kører serveren lokalt og accepterer forbindelser på Unix domæne socket /var/run/postgresql/.s.PGSQL.5432?

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.



  1. Sådan opretter du flere en til ens

  2. Forespørgsel for at kontrollere, om feltet eksisterer, og returner derefter resultatsættet

  3. PostgreSQL oprettelsesfunktion

  4. Hvordan opretter jeg en SQL-forespørgsel, der grupperer i et bestemt procentområde