postgres connection 에러 해결

2023. 9. 1. 17:32· Database/postgres
목차
  1. 본론
  2. Environment
  3. Solution 1 - postgres 재설치
  4. Solution 2 - postgres의 설정 파일 관리
  5. Solution3 - homebrew의 디렉토리 변경
  6. References

서버를 이전하기 위해서 어느날 datagrip으로 postgres server에 커넥션을 물었더니 에러가 발생했다. DB는 주로 postgres를 쓰는 편인데, 모든 local postgres 서버가 커넥션에 실패하는 것을 보고 터미널로 에러를 확인해보았다.

 

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?

 

어떻게 된 일인가 싶어 그대로 구글링해보니 상당히 많은 레퍼런스가 나왔다. 생각보다 빈번히 발생하는 에러인 것 같아 쉽게 해결할 수 있을 줄 알았으나, 꽤 오래 걸렸고 관련 레퍼런스를 남기기로 한다.

 

본론

Environment

- version : postgres@14

- install manager : homebrew

- computer : macbook air m2

 

Solution 1 - postgres 재설치

아래 명령어를 입력한다.

 

brew uninstall postgresql
brew install postgresql@14
brew services start postgresql@14
brew link postgresql@14 --force

 

이는 postgres를 재설치하는 셸 스크립트이다. 나는 여전히 다음과 같은 에러가 발생했다. 

 

Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/marsboy/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist` exited with 5.

 

Solution 2 - postgres의 설정 파일 관리

터미널에 다음과 같은 명령어를 입력한다.

 

# M1이 아닌 경우
rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql
# M1인 경우
rm /opt/homebrew/var/postgres/postmaster.pid
brew services restart postgresql

 

postmaster.pid가 손상되어 psql 명령어가 작동하지 않는 경우가 있다. 이 파일을 삭제하고 brew services restart postgresql 명령어를 실행시키면 정상 postmaster.pid가 생성되어 postgres가 제대로 동작한다.

 

하지만 내 경우에는 여전히 에러가 발생하여 세번째 방법으로 해결하였는데..

 

Solution3 - homebrew의 디렉토리 변경

$HOMEBREW_PREFIX 가 바뀌어서 디렉토리 위치가 바뀐 경우가 있다. 아래의 명령어를 통해 문제를 해결할 수 있다.

 

initdb --locale=C -E UTF-8 $HOMEBREW_PREFIX/var/postgres
pg_ctl -D $HOMEBREW_PREFIX/var/postgres -l logfile start

 

Solution 2를 살펴보면 m1인지 아닌지에 따라서 경로가 살짝 바뀌는데, m1이 아닌 경우에는 /usr/local/var/ 경로에 postgres 디렉토리가 존재해야 한다.

 

하지만 내 컴퓨터에서는 해당 경로에서 파일이 없었는데, m1 부터는 brew를 통해서 설치된 패키지들이 /opt/homebrew/var/ 내에 존재하게 된다.

 

이러한 homebrew_prefix의 불일치를 해결함으로써 postgres에 정상적으로 연결할 수 없었던 에러를 해결했고, 필자는 정상 동작했다.

 

References

  • [juanitofatas] : https://juanitofatas.com/notes/pg
  • [stackoverflow] : stackoverflow

'Database > postgres' 카테고리의 다른 글

postgres 명령어 정리  (2) 2023.12.27
  1. 본론
  2. Environment
  3. Solution 1 - postgres 재설치
  4. Solution 2 - postgres의 설정 파일 관리
  5. Solution3 - homebrew의 디렉토리 변경
  6. References
'Database/postgres' 카테고리의 다른 글
  • postgres 명령어 정리
marsboy
marsboy
IF YOU LET ME BE THE CODE
marsboy
PAINT THE WORLD
marsboy
전체
오늘
어제
  • 분류 전체보기 (86)
    • Language (8)
      • C (1)
      • Java (3)
      • Javascript (3)
      • Ruby (1)
    • Algorithm (6)
      • stable marriage problem (6)
    • Database (4)
      • postgres (2)
    • Developer (7)
    • DevOps (29)
      • AWS (5)
      • docker (9)
      • kubernetes (8)
      • On-premise (3)
      • monitoring (4)
    • ML engineer (3)
    • CS (11)
      • network (4)
      • OS (2)
      • PS (1)
      • Computer Architecture (4)
    • project (4)
    • 후기 (8)
      • 시험 (2)
      • 책 (6)
    • 회고 (6)

블로그 메뉴

  • 회고
  • Github
  • LinkedIn
  • Baekjoon
  • Japanese

공지사항

  • 공지사항

인기 글

hELLO · Designed By 정상우.v4.2.2
marsboy
postgres connection 에러 해결
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.