sql >> Databasteknik >  >> RDS >> PostgreSQL

psql:kunde inte ansluta till servern:Ingen sådan fil eller katalog (Mac OS X)

VARNING:Om du tar bort postmaster.pid utan att se till att det verkligen inte finns några postgres processer som kör dig, kan permanent skada din databas . (PostgreSQL bör ta bort det automatiskt om postmastern har avslutat.)

LÖSNING:Detta löste problemet - jag tog bort den här filen och sedan fungerade allt!

/usr/local/var/postgres/postmaster.pid

--

och här är hur jag kom på varför detta behövde raderas.

  1. Jag använde följande kommando för att se om det fanns några PG-processer igång. för mig fanns det inga, jag kunde inte ens starta PG-servern:

    ps auxw | grep post
    
  2. Jag sökte efter filen .s.PGSQL.5432 som fanns i felmeddelandet ovan. jag använde följande kommando:

    sudo find / -name .s.PGSQL.5432 -ls
    

    detta visade ingenting efter att ha sökt igenom hela min dator så filen fanns inte, men uppenbarligen psql "ville ha det" eller "trodde det var där".

  3. Jag tittade på mina serverloggar och såg följande fel:

    cat /usr/local/var/postgres/server.log
    

    i slutet av serverloggen ser jag följande fel:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
    
  4. Efter rådet i felmeddelandet tog jag bort postmaster.pid-filen i samma katalog som server.log. Detta löste problemet och jag kunde starta om.

Så det verkar som att min macbook fryste och blev hårdomstartad fick Postgres att tro att dess processer fortfarande körde även efter omstart. Det löste sig att ta bort den här filen. Hoppas detta hjälper andra! Många människor har liknande problem men de flesta svaren hade att göra med filbehörigheter, medan saker och ting var annorlunda i mitt fall.



  1. PostgreSQL-sekvens baserad på en annan kolumn

  2. FieldShield SDK

  3. Hur CEILING() fungerar i MariaDB

  4. Gör en WHERE IN på flera kolumner i Postgresql