OSX 10.7 Lion으로 업그레이드 한 후 Postgresql 복구


196

최근에 OSX 10.7로 업그레이드하여 psql 서버에 연결하려고 할 때 레일 설치가 완전히 중단되었습니다. 명령 줄에서 사용하면

psql -U postgres

완전히 작동하지만 동일한 사용자 이름과 비밀번호로 레일 서버 또는 콘솔을 실행하려고하면이 오류가 발생합니다.

...activerecord-3.0.9/lib/active_record/connection_adapters/postgresql_adapter.rb:950:in `initialize': could not connect to server: Permission denied (PGError) 
Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

무슨 일이 일어나고 있는지에 대한 아이디어는 매우 도움이 될 것입니다! 감사!


이것은 또한 내 사무실에서 누군가를 때렸다. 우리는 잘못된 바이너리를 얻는 것과 비슷한 문제가 있었고 다른 권한이있는 다른 디렉토리의 도메인 소켓에 연결하려고하는 추가 문제가 있었고 업그레이드가 로컬 데이터베이스의 모든 데이터를 먹은 것처럼 보입니다. 다행스럽게도 이것은 단지 개발 박스 였기 때문에 큰 문제는 아니지만 약간 불쾌합니다. :)

1
나는 오늘 이것 하나를 친다. 그리고 당신의 질문을 어제 읽었던 것을 기억했다. @John Wang이 나와서 설명했습니다 :)
Ryan Bigg

답변:


291

PATH 문제입니다. Mac OSX Lion은 이제 시스템에 Postgresql을 포함합니다. 당신이하는 경우 HomeBrew의 올바른 것 대신에 which psql볼 수 있습니다 . 실행 하면 PATH env 변수의 헤드에 추가해야한다는 메시지가 표시 됩니다.usr/bin/psqlusr/local/bin/psqlbrew doctorusr/local/bin

.bash_profile 또는 .profile을 편집하거나 사용중인 쉘을 편집하십시오. export PATH=/usr/local/bin:$PATH

PATH그런 다음 첫 번째 내보내기로 셸 세션을 종료하거나 파일을 소스로 가져 오면 source ~/.bash_profile이제 다시 정상입니다.


12
이것은 그것을 고쳤다. / etc / paths를 편집하고 / usr / local / bin이 맨 위에 있는지 확인하십시오.
Greg

153
또한 경로를 수정하기 전에 pg gem을 설치하면 잘못된 psql이 사용됩니다. 그렇다면 pg gem을 제거한 다음 다시 설치하십시오 (gem uninstall pg && gem install pg).
Troy

4
이게 양조입니까? $의 PATH : / 옵션 / 지방 / lib 디렉토리 / postgresql91 그래서 있는지 확인 사용 수출 PATH = / 옵션 / 지방 / lib 디렉토리 / postgresql91 / 빈 : 포트에 넣어 것 같다
안토니 스텁 스

1
내 경로는 올바르게보고되었지만 pg gem을 제거하는 Troy의 솔루션은 번 들러를 다시 설치하도록하여 속임수를 사용했습니다.
Tom Harrison

2
명확히하기 위해-경로를 올바르게 설정하는 것이 가장 좋은 것처럼 보이고 pg gem을 제거 / 재설치하십시오.
Jamie Cook

90

관심있는 분들을 위해 솔루션을 정리했습니다. 내가 필요한 건

host: localhost

내 환경에 대한 database.yml에 모든 것이 그레이비였습니다.


9
다음 사항에주의하십시오.이 설정은 도메인 소켓에서 TCP 연결로 액세스를 변경합니다. 작동하는 동안 시스템에서 약간의 성능과 사용 가능한 포트가 손실 될 수 있으며 설정에 따라 문제가 될 수 있습니다. John이 제공 한 솔루션이 맞습니다.
pilif

3
'gem uninstall pg'(모든 버전 선택) 다음 'bundle'을 다시 사용하여 Gemfile에서 pg 버전을 설치하십시오.
tmadsen

감사합니다 Dave G, 이것도 저에게 효과적이었습니다. 10.7.3 업데이트를 설치하고 db : migrate가 불평했습니다. 이것은 그것을 고쳤다.
Sathish

이것은 나에게도 효과가있었습니다. 그러나 암호와 사용자 이름을 비워 두었습니다.
Benjamin

TCP / IP 연결을 강제 실행하기 때문에 이것이 작동한다고 생각합니다.
duma

46

Mountain Lion 에서이 문제가 발생했지만 나를 위해 일한 유일한 것은 이 수정 이었습니다 .

실제 목표가 어디에 있는지 확인하십시오.

sudo find / -name .s.PGSQL.5432

이 디렉토리를 만들어야했습니다.

mkdir /var/pgsql_socket/

그런 다음 위의 찾기 결과를 사용하여 다음 심볼릭 링크를 만듭니다.

ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

Mountain Lion의 대부분의 사람들은 단지 dir을 만들고 symlink를 수행 할 수 있으며 symlink가 작동하지 않는 한 찾기 작업을 수행하는 데 시간을 낭비하지 않을 것으로 생각합니다.

추신-내 PostgreSQL은 공식 설치 프로그램을 통해 설치되었습니다.


나는 그것이 나에게는 그럴지도 모르지만 그것이 효과가 없다고 생각합니다. 나는 이것을 얻는다 : ln : / var / pgsql_socket / : 그런 파일이나 디렉토리가 없다
Emmanuel

미안, 나도 그와 마주 쳤다는 것을 잊었다. 답변을위한 추가 단계가 추가되었습니다.
Ben

당신에게 벤을 축복하십시오. 매우 감사히 생각한다.
Matt

29

경로를 변경 한 후에도 문제가 지속되면 (이것처럼) 시도하십시오 ...

gem pristine pg

문제는 (부분적으로) pg gem 자체에 있습니다. 빌드 될 때 도메인 소켓이 어디에 있어야하는지 알아냅니다. 사실 이후 도메인 소켓의 위치를 ​​변경하면 gem을 다시 빌드 할 때까지 적용되지 않는 것 같습니다.


PATH를 수정하고 깨끗한 상태로 pg gem을 다시 설치 한 후에도 이것은 나를 위해 일했습니다.
Elliot Winkler 2012 년

이 팁에 감사드립니다, Darren
bhinks

15

공식 설치 프로그램에서 직접 설치 한 사용자는 호스트를 명령에 추가하기 만하면 경로가 변경되지 않습니다.

psql -h localhost -U postgres

5

나는 같은 문제가 있었고 John Wang의 솔루션을 작동시키는 데 문제가있었습니다. 대런은 pg gem에 문제가 있다고 언급했다. 작동하려면 다음이 필요했습니다.

gem uninstall pg

그런 다음 다시 설치하십시오.

어느 것이 효과가 있었습니까?


나는 이것을 두 번 실행해야했다 ... 홀수. pg를 제거한 다음 번들 설치를 제거했는데 실패했습니다. 그런 다음 보석 설치 pg를하고 효과가있었습니다. 감사!
더스틴

3

나는 이것도 만났지 만 postgres를 직접 설치했다 (homebrew가 아닌). 이 경우 psql의 이전 경로 (/ usr / local / bin 일 수 있지만 / usr / local / pgsql / bin 일 수 있음)를 찾아 $ PATH 앞에 추가해야합니다.

(이전) which psql=> / usr / bin / psql

(수정) 내보내기 PATH = / usr / local / psql / bin : $ PATH

(이후)`which psql '=> / usr / local / psql / bin

John Wang이 source ~/.bash_rc나중에 bash_rc에 추가한다고 제안하면 황금색입니다.



1

@pilif가 지적한 것처럼 OS 사용자마다 다르거 나 Postgres가 도메인 소켓 대신 TCP를 사용하도록 Postgres를 다시 매핑하므로 가장 많이 찬성 된 답변에 만족하지 않습니다. 코어 시스템 경로 전에 Brew의 경로를 확인하기 위해 시스템 수준에서 기본 경로를 재정렬하는 다른 솔루션을 보았지만이와 같은 다른 모든 응용 프로그램 이름 충돌에 영향을 줄 수 있으므로 위험 해 보입니다.

이 사이트 는 동료가 찾은 솔루션에 대해 자세히 설명합니다. 단일 쉘 스크립트를 실행하는 것입니다.

  1. Postgres 8.4 파일을 별도의 디렉토리에 백업
  2. BREW의 Postgres 설치 symlink

여기에는 시스템 기본 Postgres가 설치된 것이기 때문에주의해야합니다. 따라서 자신에게 적합한 지 판단해야합니다. 9.x 이상의 Postgres 8.4가 필요하지는 않지만 YMMV가 필요합니다.


1

나를 위해 일한 또 다른 해결책은 포스트 마스터 파일을 삭제하여 재설정하는 것입니다. 간단히 실행하십시오.

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

여기에서 찾을 수있는 오류를 로그에서 확인하는 것이 좋습니다.

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

내가 가진 오류 메시지는 다음과 같습니다.

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

그 후 모든 것이 훌륭하게 작동했습니다.


커맨드 라인에서만 문제가 발생했습니다. /usr/local/var/postgres/postmaster.pid 파일을 제거하면 문제가 해결되었습니다.
Michael A.

0

필자의 경우 잘못된 공유 메모리 설정으로 인해 서버가 시작되지 않았습니다. 처음에는 여러 개의 postgres 프로세스가 실행 되었기 때문에 혼란 스러웠지만 표준 시스템 프로세스였습니다. postmaster프로세스를 찾으십시오 !

공유 메모리 설정변경하기 만하면됩니다 . 필자의 경우 경로 설정을 다루지 않아도되었습니다.


0

데이터베이스의 호스트를 지정해야 할 수도 있습니다.


0

$ PATH를 영구적으로 변경하려면 다음을 시도하십시오.

defaults write $HOME/.MacOSX/environment PATH "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin"

이것은를 다시 작성합니다 ~/.MacOSX/environment.plist.


0

Rails를 처음 사용하지만 database.yml에 다음을 추가하면 효과가 있습니다.

host: localhost

port: 5432

PostgreSQL이 기본적으로 도메인 소켓을 설정하지 않는 동안 Rails가 TCP 대신 도메인 소켓으로 기본 설정되는 이유를 잘 모르겠습니다.


0

내 PostgreSQL은 / ​​Library / PostgreSQL에 설치되어 / usr / var 기능이 작동하지 않습니다.

맥북 프로의 뚜껑을 닫을 때마다 충돌이 발생하기 때문에 Woz가 올바른 것으로 보입니다.

sudo su postgres -c "/Library/PostgreSQL/9.2/bin/pg_ctl -m fast -D /Library/PostgreSQL/9.2/data restart"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.