Mac OSX에서 Postgres DB가 시작되지 않음 : 오류 메시지 : Unix 도메인 소켓의 연결 [닫힘]


81

Postgresql을 설치 한 다음 로컬 Mac OSX Mountain Lion에서 여러 레일 앱을 실행하고 데이터베이스 등을 만들었습니다. 오늘 잠시 후 pgAdminIII를 시작하고 데이터베이스 서버를 시작하려고 할 때이 오류가 발생했습니다.

여기에 이미지 설명 입력

빠른 Google 이이 게시물을 보여주었습니다 . 더 많은 브라우징은 이것의 근본 원인이 될 수있는 일종의 postmaster.pid 파일이 주변에있을 수 있다는 사실을 지적했습니다. 내가 삭제하면 괜찮을 것입니다.

그러나 내 컴퓨터에서 항목을 삭제하기 전에 더 많은 문제를 일으키지 않는 체계적인 방식으로 디버깅하는지 확인하고 싶었습니다.

파일을 삭제하기 전에 읽은 곳에서 다음 명령을 실행해야합니다.

  ps auxw | grep post

결과가 없으면 파일을 삭제해도됩니다. 그렇지 않으면 아닙니다. 글쎄, 나는 그 명령의 결과를 얻었습니다.

  AM               476   0.0  0.0  2423356    184 s000  R+    9:28pm   0:00.00 grep post

그래서 지금 당연히 나는 완전히 혼란스러워했습니다.

그래서 내가 무엇을해야하니?

다음은 내 postgres 서버 오류 로그의 일부입니다.

 FATAL:  lock file "postmaster.pid" already exists
 HINT:  Is another postmaster (PID 171) running in data directory "/usr/local/var/postgres"?

Postgresql이 여전히 실행되고 있지 않지만 여전히 동일한 오류가 발생하며 변경된 사항이 없습니다. 너무 닭이 너무 많아서 확인하지 않고 물건을 삭제합니다.

전문가 중 일부는 멍청한 사람을 안내해 주시겠습니까?

감사


첫째, 저는 전문가가 아닙니다. 즉, 데이터베이스가 제대로 종료되지 않은 것 같습니다. pid 파일을 제거하고 데이터베이스를 시작하려고합니다.
fbynite 2013-07-23

네, 그게 제가하고 싶은 일이지만, 이것이 수행되는 동안 pid가 실행되면 데이터베이스에 영구적 인 손상을 줄 수 있다는 것을 어딘가에서 읽었습니다. 확실하지 모든에 대해 무엇 이었습니까 그
banditKing

@banditKing 삭제할 필요가 없습니다 postmaster.pid. 서버는 시작시 유효하지 않은 (오래된 경우) 삭제하며 데이터 보호에 중요합니다. EnterpriseDB 설치 프로그램, homebrew, Postgres.app을 통해 시작 하기 위해 컴퓨터PostgreSQL을 설치 한 방법을 설명 하십시오 . PostgreSQL 버전도 언급하십시오. 마지막으로 Pgadmin-III의 연결 옵션에 "localhost"를 명시 적으로 추가하면 작동합니까? 그렇다면, 당신은 ... 애플이 얼마 전에 만들어진 정말 나쁜 포장의 결정에 물린 것
크레이그 벨소리

@CraigRinger 명확히 해주셔서 감사합니다. 나는 그것을 어떻게 설치했는지 기억이 나지 않습니다. 제가 할 수 있는게 있나요? 또는 거기에있는 데이터는 테스트 데이터 일 뿐이므로 최악의 경우 제거하고 다시 설치할 수 있습니다. 올바르게 수행하는 방법에 대한 좋은 블로그 / 튜토리얼이 있습니까?
banditKing

1
@banditKing 재부팅을 시도 했습니까? wiki.postgresql.org/wiki/Installers/Mac_OS_X 에서 어떻게 설치했는지 확인할 수 있습니다 . Homebrew를 사용한 것 같습니다. PostgreSQL 서버가 잘못 삭제 되지 않으면 실행중인 프로세스 가 없는지 확인한 후 제거 postmaster.pid수 있습니다 . 실제로 PostgreSQL 프로세스가 없는지 확인하는 것이 중요 합니다. 그러나 서버가 부실을 제거하지 못하는 것은 나에게 버그처럼 보입니다. postgrespostmaster.pid
Craig Ringer

답변:


192

오늘 Mac Sierra에서 같은 문제가 발생했습니다. Mac Sierra postmaster.pid에서 /Users/<user_name>/Library/Application Support/Postgres/var-9.6. 삭제 postmaster.pid하면 문제가 해결됩니다.


19
postmaster.pid이 위치에서 삭제 되고 문제가 수정되었습니다. 감사!
JLF

1
내가 발견 할 필요가있는 곳이기도하다 postmaster.pid나는 Postgres.app 사용하고 있기 때문에 파일을
Jarsen

3
Postgres.app의 경우는 동일합니다 :이 여기에 있다고 할 수있다/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
사이먼 프란 젠을

1
v10을 실행하는 Postgres.app도 사용하고 있습니다. Postgres가 실행되는 동안 내 Mac이 예기치 않게 종료되면 컴퓨터를 다시 시작할 때 postmaster.pid 파일을 삭제해야합니다. 그것이 앱의 예상되는 동작인지 아는 사람이 있습니까? 고의적으로 보면 이상한 디자인처럼 보입니다.
Alexander

이 파일을 제거하기 전에 프로세스가 회전되었는지 확인하십시오. 당신은 실행할 수 있습니다 cat postmaster.pid당신은 PID가 활동 모니터 같은 실행을 참조하지 않습니다 및 참조 훔쳐 디렉토리에. Postgres UI는 이에 대해 알려줄 것이지만, 사람들이 멍청 해지기 전에 여기에 넣어야한다고 생각했습니다. 또한 postgres활동 모니터에서 찾아서 관련된 모든 것을 종료하거나 시스템을 다시 시작한 다음 파일을 삭제하는 것으로 충분해야 합니다. 이렇게하지 않으면 db 🔥가 손상 될 수 있습니다.
CTS_AE

42

이는 데이터베이스가 올바르게 종료되지 않은 경우 발생할 수 있습니다. 문제를 해결하려면 postmaster.pid파일을 삭제하면 됩니다. 위치는 OS에 따라 다릅니다.

맥 OS:

 rm /Users/<user_name>/Library/Application\ Support/Postgres/var-9.6/postmaster.pid

또는 Postgres.app 사용 :

 rm /Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid

리눅스 :

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

2
감사합니다.이 솔루션이 작동합니다! 제거한 후 postmaster.pid및 실행 postgres -D /usr/local/var/postgres, 그것은 오류의 원인에 대해 저를 통지 : "데이터베이스 시스템이 제대로 종료되지 않은, 진행중인 자동 복구"
호앙 르

이것은 내 문제 해결
파브리스 Yopa

작동합니다. 제 경우에는 하드 재부팅으로 인해 pid 파일이 제거되지 않았기 때문에 백업해야했습니다.
George C

21

이제 데이터베이스가 작동합니다.

내가 취한 단계는 다음과 같습니다.

  1. 컴퓨터를 재부팅했습니다.
  2. 나는 터미널을 열고 달렸다 cd /
  3. 그런 다음 ls -la
  4. 내가 갈 수 있는지 확인 MackintoshHD/usr/local/var/postgres
  5. 그런 다음 ls -la
  6. 여기서 postmaster.pid 파일을 보았습니다.
  7. 이 명령 cp postmaster.pid ~/Desktop을 실행 하여 파일을 데스크탑에 복사했는데 파일을 삭제할 때이 작업을 수행하고 싶습니다. 뭔가 잘못되면 다시 되돌릴 수 있습니다
  8. 그런 다음이 명령을 실행하여 postgres 디렉토리에서 파일을 제거했습니다. rm -r postmaster.pid
  9. 내 pgadmin3 gui로 가서 해고했습니다. 그리고 Voila는 작동했습니다. :)

도움을 주신 @Craig Ringer에게 감사드립니다.


6
내 것은 / usr / local / var / postgres가 아니라 / Users / [myhome] / Library / Application Support / Postgres / var-9.5 /-마지막 디렉토리는 버전에 따라 다르며 postmaster.pid를 삭제하고 매력처럼 작동했습니다. 감사합니다
라덱

4

Postgres.app을 사용하고 있으며 아래가 저에게 효과적이었습니다.

"justin"을 사용하지 않고 Postgres 폴더를 미리 찾아서 아래의 터미널에 명령을 입력했습니다.

$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4"

$pg_ctl restart -m immediate

Justin이 자신의 게시물에서 설명했듯이 그 이후의 결과는 다음과 같습니다.

서버 종료 대기 중 ……………………………………………………… 실패 pg_ctl : 서버가 종료되지 않음

명령을 다시 입력 한 후 :

$pg_ctl restart -m immediate

작동했고 다음 메시지를 받았습니다.

pg_ctl : 이전 서버 프로세스 (PID : 373)가 어쨌든 서버를 시작하는 것 같습니다. 서버 시작 LOG : 데이터베이스 시스템이 중단되었습니다. 2015-07-28 18:15:26 PDT LOG : 데이터베이스 시스템이 제대로 종료되지 않았습니다. 자동 복구 진행 중 로그 : 0 / 4F0F7A8에서 길이가 0 인 레코드 로그 : 다시 실행이 필요하지 않습니다. 로그 : 데이터베이스 시스템이 연결을 수락 할 준비가되었습니다. 로그 : autovacuum 실행기가 시작됨

출처

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