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


247

내 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를 시작할 수 없습니다.


1
건전성 검사로서 머신에서 PG가 실행 중인지 확인하십시오.
Jbur43

1
답변을 떠날 때 왜 이런 일이 발생하는지 또는 Postgres 시스템이 어떻게 작동하는지 설명해보십시오. 우리 모두가 무작위로 시도하지는 않습니다.
Nick Res

6
brew reinstall postgresql stackoverflow.com/a/39781473/6086226은 나를 위해 일한
Derk 월 Speelman에게

PostgreSQL을 다시 설치하면 문제가 해결되었습니다.
Ajay Kumar

답변:


422

경고 : 실제로 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는 재부팅 후에도 프로세스가 여전히 실행되고 있다고 생각합니다. 이 파일을 삭제하면 해결되었습니다. 이것이 다른 사람들을 돕기를 바랍니다! 많은 사람들이 비슷한 문제를 가지고 있지만 대부분의 대답은 파일 권한과 관련이 있지만 내 경우에는 상황이 다릅니다.


9
이 답변이 다른 사람을 도울 수 있기를 바랍니다. 이 질문을 중복으로 표시 한 중재자에도 불구하고 독특하고 유용합니다. 멋진 사이트와 공유에 대한 전문가들에게 스택 오버플로 감사합니다!
FireDragon

2
그냥 FWIW는 postmaster.pid을 삭제하면 당신은 할 수있어, 위험 정말 모르겠 음 없다 postgres당신은 그것을하기 전에 실행중인 프로세스.
Craig Ringer

21
좋은 대답입니다. 잠재적으로 파괴적인 명령이 아닌 전체 프로세스를 게시 해 주셔서 감사합니다!
dojosto

3
동의했다. postmaster.pid에 대한 대답은 좋지만 postgres가 실행 중인지 여부를 파악하는 프로세스의 각 단계는 매우 중요 합니다. 감사합니다!
클린턴

11
macos에 대한 postgres 로그는에있었습니다 /usr/local/var/log/postgres.log.
ryantuck

172

위의 어느 것도 나를 위해 일하지 않았습니다. 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)

4
나를 위해 일했지만 실제 데이터베이스를 제거 할 필요가 없으며 응용 프로그램 지원에 폴더가 없었습니다. 요점은 postgres를 설치하는 동안 일부 추출 요소가 심볼릭 링크를 끊었다는 것입니다. 문제를 해결하고 postgres를 다시 설치하면 문제가 해결되었습니다. 감사!
Kulbi

2
나는 또한 실행 될 때까지 어느 쪽이도 최고 대답은 나를 위해 일한brew postgresql-upgrade-database
ErikAGriffin

이전 데이터를 삭제할 필요가 없다는 것을 제외하고는 나를 위해 일했습니다.
Amal Antony

확인하려면 모든 데이터베이스가 삭제됩니다. 맞습니까? brew reinstall postgres최신 Homebrew Postgres 주요 버전 번호가 현재 (깨진) 버전 번호와 동일하다는 것을 확인 하면서 그냥으로 얻을 수있었습니다 .
Jacob 포드

85

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

brew services restart postgresql

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

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

34

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

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

4
이 카탈리나에 12에 11에서가는 나를 위해 일한
nzajt

1
나를 위해 일했다
비어있는 벽

15

여기 내 방법이 있습니다.

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

1
이것은 homebrew를 사용하여 Postgres를 중지하고 시작 / 다시 시작 / 다시 설치하지 않았을 때 효과적이었습니다. 감사합니다 @ smartworld-dm
브래들리

1
이것이 내가 항상 돌아 오는 영혼입니다. 실행할 fix-my-postgresql때 다음을 수행 하는 별칭을 추가 할 수 있습니다. :)
Tomas K

1
PC를 재부팅 할 때마다이 작업을 수행해야하는 이유가 있습니까?
stephano

11

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

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

처음에 여기 에 설명 된대로


8

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를 예쁜 데이터 테이블로 보는 좋은 방법입니다.

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


1
여기서 핵심은 Postgres를 경로에 추가하는 것입니다 (2 단계). 그것은 나를 도왔다. Homebrew를 사용하여 Postgres를 설치 한 경우 .bash_profile에 다음 줄을 추가하여 경로에 추가 할 수 있습니다. export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH– 버전 번호가 다를 수 있습니다.
Tina

7

이 문제에는 많은 출처가 있으므로 많은 답변이 있습니다. 나는 그들 각각을 경험했습니다.

1) 충돌이 발생하면 postgres가 제대로 처리하지 못했을 수 있으므로 /usr/local/var/postgres/postmaster.pid 파일을 제거해야합니다. 그러나 프로세스가 실행되고 있지 않은지 확인하십시오.

2) Craig Ringer는 Apple의 postgreSQL 번들로 인해 pg gem 설치 문제가 발생 한다고 다른 게시물에서 지적했습니다 . PATH 환경 변수를 설정하는 것이 해결책입니다.

3) 또 다른 해결책은 gem을 제거했다가 다시 설치하는 것입니다. 추출 업데이트가 필요할 수도 있습니다.

이 게시물을 우연히 발견 한 경우 소스 중 하나를 찾아 내면 시간을 절약 할 수 있습니다.


3
이 글을 게시하게되어 기쁩니다. 또 다른 충돌과 대답은 오히려 빨리 회복 될 수 있습니다 ...
Jerome

6

나를 위해 해결책은 단순히 컴퓨터를 다시 시작하는 것입니다. 나는 먼저 Brew 서비스로 다시 시작하려고 시도했지만 작동하지 않을 때 다시 시작하는 것이 더 관련이 많은 솔루션을 조사하기 전에 시도 할 다음 최고의 옵션처럼 보였습니다. 모든 것이 그 이후로 작동했습니다.


5

나는 비슷한 문제에 직면하고 있었고 나는이 문제를 아래와 같이 해결했다.

실제로 postgres 프로세스가 종료되었습니다. postgres의 상태를 보려면 다음 명령을 실행하십시오.

sudo /etc/init.d/postgres status

프로세스가 종료되었다고 말합니다. 프로세스를 시작하십시오.

sudo /etc/init.d/postgres start

답변 주셔서 감사합니다, 당신의 대답은 수정 일부 수정 같은 문제를 해결하는 데 도움이 : sudo /etc/init.d/postgresql start
Pravitha V

4

Mac (High Sierra)이 멈춘 후에이 문제가 발생하여 수동으로 다시 시작해야했습니다 (전원 버튼을 길게 누릅니다). 내가 그것을 해결하기 위해해야 ​​할 일은 완전히 다시 시작하는 것입니다.


3

내 문제는 Gas Mask (Mac의 호스트 파일 관리자)를 사용하고 있었고 사용중인 호스트 파일에 localhost에 대한 항목이 없다는 것입니다.

나는 덧붙였다 :

127.0.0.1 localhost

그리고 그것은 내 문제를 해결했습니다.


3

왜 그런지 잘 모르겠지만 Postgres 설치가 약간 망쳐 져 일부 파일이 삭제되어 OP가 표시되는 오류가 발생했습니다.

내가 같은 명령을 실행할 수 있다는 사실에도 불구하고 brew service retart postgres 하고 적절한 메시지를 볼 하고이 오류는 지속되었습니다.

postgres 문서를 살펴본 결과 내 파일 /usr/local/var/postgres이 완전히 비어 있음을 발견했습니다 . 그래서 나는 다음을 실행했다.

initdb /usr/local/var/postgres

해당 명령으로 일부 구성이 이루어진 것 같습니다.

그런 다음이를 실행하도록 요청했습니다.

postgres -D /usr/local/var/postgres

그리고 그것은 postmaster.pid 파일이 이미 존재한다고 말했습니다.

brew가 방금 실행 한 구성을 선택할 수 있는지 알아야했기 때문에 테스트했습니다.

ls /usr/local/var/postgres

그것은 postmaster.pid 파일을 보여주었습니다. 그런 다음 brew services stop postgresqlpostmaster.pid 파일이 사라졌습니다. 그런 다음brew services start postgresql 파일을 다시 보았습니다.

그런 다음 실제로 서버를 찾은 앱을 실행했지만 데이터베이스가 사라진 것 같습니다.

나는 그들이 전혀 사라지지 않을 수도 있다는 것을 알고 있지만, 내가했던 새로운 초기화는 새로운 data_area를 만들었을 수도 있고, 오래된 것은 지적되지 않았습니다. 나는 그것이 어디에 있는지 살펴보고 다시 가리 키거나 데이터베이스를 다시 만들어야합니다.

도움이 되었기를 바랍니다! postgres 문서를 읽으면 많은 도움이되었습니다. 나는 "그것을 붙여 넣으십시오!"와 같은 답변을 읽는 것을 싫어 도대체 무슨 일이 일어나고 있는지, 왜 그런지 모르겠 기 때문입니다.


2

이 오류의 원인은 많으므로 먼저 로그 파일을 찾아서 힌트를 확인하십시오. 그것은에 수 있습니다 /usr/local/var/log/postgres.log또는 /usr/local/var/postgres/server.log또는 아마도 다른 곳에서. Homebrew와 함께 설치 한 경우에서 위치를 찾을 수 있습니다 ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist.


2

나는 같은 문제가 있었다. 대부분의 경우 문제는 남은 파일이 있다는 사실입니다.

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

대부분의 사람들에게는 효과가 있었지만 제 경우는 달랐습니다. 지난 3 시간 동안이 문제를 인터넷 검색하려고 시도했으며, brew를 통해 OSX에서 postresql을 제거하고 데이터베이스를 제거했으며 아무것도 작동하지 않았습니다.

마지막으로, 나는 brew에 문제가 있음을 발견했습니다.

Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

또는 설치가 끝날 때와 같은 것.

나는 단순히했다 sudo chmod -R 777 /private/tmp 마침내 작동합니다!

다른 사람을위한 해결책 일 수 있기 때문에 이것을 작성하고 있습니다.


1

/var/log/ 고양이로 이동하여 실행 postgres.log postgres의 실패 이유를 찾을 수 있습니다. 스마트 셧다운 인 경우 icu4c버전 (유니 코드 용 C ++ 라이브러리)이 (와) 링크되어 있지 않을 수 있습니다 postgres. 따라서 다음 명령을 실행하십시오.

brew upgrade brew cleanup 이것은 작동해야합니다.)


Homebrew brew stylebrew cleanup중단 되면 나중에 실행해야 할 수도 있습니다 .
olliezhu

0

이 문제를 해결하기 위해이 게시물을 여러 번 찾아야했습니다. 다른 실행 프로그램과 유사한 문제에도 적용되는 또 다른 수정 프로그램이 있습니다.

방금 다음 두 명령을 사용할 수 있음을 발견했습니다.

최고

이것은 현재 실행중인 모든 작업을 pid 번호와 함께 표시합니다. postgres 및 관련 pid를 찾으면

$ kill pid_number


0

내 컴퓨터 ( ubuntu)를 업데이트에 넣고 오류가 발생 했을 때와 동일한 문제 가 발생했습니다.

서버에 연결할 수 없음 : 해당 파일 또는 디렉토리가 없습니다. 서버가 로컬로 실행 중이고 Unix 도메인 소켓 "/var/run/postgresql/.s.PGSQL.5432"에서 연결을 허용합니까?

시스템을 다시 시작할 때 업데이트 프로세스를 완료 한 후 시스템 오류가 사라졌습니다. 그리고 이전과 같이 매력처럼 작동했습니다. pg가 업데이트되고 또 다른 프로세스가 시작되면서 이런 일이 일어났다 고 생각합니다.


0

SUPER NEWBIE ALERT : 나는 웹 개발을 배우고 있으며 내가 언급 한 특정 자습서는 Postgres를 설치해야하지만 실제로는 그것을 실행 해야한다고 언급하지 않았습니다 ... Postgres 응용 프로그램을 열면 모든 것이 잘되고 멋쟁이.


0

@Jagdish Barabari의 대답은이 문제를 해결하는 데 필요한 단서를 제공했습니다. 하나만 실행되는 동안 두 개의 postgresql 버전이 설치되어 있음이 밝혀졌습니다. 모든 postgresql 파일을 제거하고 최신 버전을 다시 설치하면이 문제가 해결되었습니다.


0

LD_LIBRARY_PATH에서 / usr / lib를 제거하고 작동했습니다. 나는 dockerfile postgres : alpine에서 일하고있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.