sql >> Databasteknik >  >> RDS >> PostgreSQL

fel med postgresql datababse :Körs servern lokalt och accepterar anslutningar på Unix-domänsocket /var/run/postgresql/.s.PGSQL.5432?

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.



  1. hur kontrollerar man null eller inte om mysql datatype är tidsstämpel med standardvärdet 0000-00-00 00:00?

  2. Hur man skapar transaktionsreplikering

  3. Hur man får det automatiska ökningsvärdet för primärnyckeln i MySQL med Hibernate

  4. Mysql-fel:Frågan var tom