[macos] psql : 서버에 연결할 수 없습니다 : 해당 파일이나 디렉토리가 없습니다 (Mac OS X)

내 Mac을 재시동하면 무서운 Postgres 오류가 발생했습니다.

psql: could not connect to server: No such file or directory
 Is the server running locally and accepting
 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

이 문제가 발생하는 이유는 관련이없는 문제로 인해 맥북이 완전히 멈 췄기 때문에 전원 버튼을 사용하여 하드 재부팅해야했기 때문입니다. 재부팅 후이 오류로 인해 Postgres를 시작할 수 없습니다.



답변

경고 : 실제로 postgres실행중인 프로세스 가 없는지 확인하지 않고 postmaster.pid를 삭제 하면 데이터베이스가 영구적으로 손상 될 수 있습니다 . (포스트 마스터가 종료 한 경우 PostgreSQL에서 자동으로 삭제해야합니다.)

솔루션 :이 문제는 해결되었습니다.이 파일을 삭제하면 모든 것이 제대로 작동했습니다!

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

그리고 이것이 왜 이것이 삭제되어야하는지 알아 낸 방법입니다.

  1. 다음 명령을 사용하여 실행중인 PG 프로세스가 있는지 확인했습니다. 나를 위해 아무도 PG 서버를 시작할 수 없었습니다.

    ps auxw | grep post
  2. 위의 오류 메시지에있는 .s.PGSQL.5432 파일을 검색했습니다. 나는 다음 명령을 사용했다 :

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

    이것은 전체 컴퓨터를 검색 한 후 아무 것도 보여주지 않아서 파일이 존재하지 않았지만 psql“원하는”또는 “생각했다”는 것이 분명 합니다.

  3. 서버 로그를보고 다음 오류를 보았습니다.

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

    서버 로그 끝에 다음과 같은 오류가 표시됩니다.

    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. 오류 메시지의 조언에 따라 server.log와 동일한 디렉토리에서 postmaster.pid 파일을 삭제했습니다. 이 문제를 해결하고 다시 시작할 수있었습니다.

따라서 내 맥북이 멈추고 하드 재부팅되면 Postgres는 재부팅 후에도 프로세스가 여전히 실행되고 있다고 생각합니다. 이 파일을 삭제하면 해결되었습니다. 이것이 다른 사람들을 돕기를 바랍니다! 많은 사람들이 비슷한 문제를 가지고 있지만 대부분의 대답은 파일 권한과 관련이 있지만 내 경우에는 상황이 다릅니다.


답변

위의 어느 것도 나를 위해 일하지 않았습니다. Postgres를 다음과 같이 다시 설치해야했습니다.

  • brew로 postgresql 제거 : brew uninstall postgresql
  • brew doctor (여기에 무엇이든지 고치십시오)
  • brew cleanup
  • 모든 Postgres 폴더를 제거하십시오.

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • brew로 postgresql을 다시 설치하십시오. brew install postgresql

  • 서버 시작 : brew services start postgresql
  • 이제 데이터베이스를 만들어야합니다 … ( createdb)

답변

macOS를 사용 중이고 homebrew를 통해 postgres를 설치 한 경우

brew services restart postgresql

Ubuntu를 사용하는 경우 다음 명령 중 하나를 사용하여 다시 시작할 수 있습니다.

sudo service postgresql restart

sudo /etc/init.d/postgresql restart


답변

아마도 이것은 관련이 없지만 ;를 postgres사용하여 주 버전으로 업그레이드 할 때 비슷한 오류가 나타납니다 brew. 를 사용하여 brew info postgresql도움이되는 것을 발견했습니다.

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database


답변

여기 내 방법이 있습니다.

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist


답변

당신 postmaster.pid이 사라지고 다시 시작할 수 없거나 아무것도 없다면, 이렇게하십시오 :

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

처음에 여기 에 설명 된대로


답변

Hello world 🙂
나에게 가장 좋지만 이상한 방법은 다음 일을하는 것이 었습니다.

1) postgres93.app 다운로드 또는 다른 버전을 . 이 응용 프로그램을 / Applications / 폴더에 추가하십시오.

2) 파일에 행 (명령 ) 추가.bash_profile (내 홈 디렉토리에 있음)에 .

내보내기 경로 = / Applications / Postgres93.app / Contents / MacOS / bin / : $ PATH

psqlfrom
의 경로 입니다 Postgres93.app. 콘솔이 시작될 때마다 행 (명령)이 실행됩니다.

3) 폴더 Postgres93.app에서 시작하십시오 /Applications/. 로컬 서버를 시작합니다 (포트는 “5432”이고 호스트는 “localhost”입니다).

4) 이 모든 조작 후에 나는 $ createuser -SRDP user_name다른 명령 을 실행 하고 그것이 작동하는 것을보고 기뻤습니다 ! Postgres93.app시스템이 시작될 때마다 실행되도록 할 수 있습니다.

5) 또한 데이터베이스를 그래픽으로보고 싶다면 설치해야합니다.PG Commander.app . postgres DB를 예쁜 데이터 테이블로 보는 좋은 방법입니다.

물론 로컬 서버에만 도움이됩니다. 이 지침이이 문제에 직면 한 다른 사람들에게 도움이된다면 기쁠 것입니다.