시작하며
서버를 이전하기 위해서 어느날 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 명령어 정리 (1) | 2023.12.27 |
---|