오류 해결/PostgreSQL

[PostgreSQL] 512 에러, postgresql 갑자기 실행 안될때

Zaein 2024. 1. 3. 12:08
➜  nestjs-project git:(dev) ✗ yarn prisma:push      
yarn run v1.22.19
warning ../../../../../package.json: No license field
$ dotenv -e .env prisma db push
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "local_project", schema "public" at "localhost:5432"

Error: P1001: Can't reach database server at `localhost`:`5432`

Please make sure your database server is running at `localhost`:`5432`.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

 

 

local에서 개인 프로젝트를 진행하던 중

db schema의 변경사항이 생겨 prisma push를 했더니 이런 오류가 발생했다.

 

아니 분명 저번주 까지는 잘 됐는데?....

 

그 사이에 있던 일 이라곤 노트북을 껐다 켰다는 것 밖에 없음

정신차려 노트북아....

 

 

 

 

 

오류메시지는 5432포트에서 실행중인 PostgreSQL 데이터베이스 서버에 연결할 수 없다는 내용

대체 왜..!!!

 

부랴부랴 검색해보니

 

1. postgresql이 실행중이지 않거나 상태가 이상할때

2. 네트워크 문제

3. env파일의 문제

 

세 상황 중 하나인 것 같다.

 

1번 아니면 3번이라는 생각을 했다

 

왜냐면 아까 git에 올리면서 env파일이 지워짐.. 그래서 다시 작성했음

내가 보기엔 잘 작성한것 같은데 뭔가 나도 모르는 실수가 있을지도..?

 

 

 

그리고

brew services list

명령어로 실행중인 서비스의 상태를 확인해보니

 

postgresql이 512에러가 떠있었음...

 

 

 

 

그래서 1번을 먼저 해결해보고

안되면 3번을 살펴보기로!

 

 

 

 

 

 

 

 

찾아보니 512에러는 권한과 관련된 에러라는 글을 발견.

저번주에 postgresql의 권한 문제때문에 하루종일 삽질했던 기억이 떠오르면서

정신이 아득해짐

 

 

sudo chown -R $(whoami) /usr/local/Cellar/postgresql@14

폴더의 소유권을 현재 사용자로 변경하는 명령어이다.

 

 

현재 사용자가 누군지 확인하는 명령어는

whoami

이걸 입력하면 된다.

 

 

 

나는 postgresql의 설치경로가 저 곳이 아니었기 때문에

brew --prefix postgresql@14

로 정확한 설치경로를 확인해주고

 

 

sudo chown -R $(whoami) /opt/homebrew/opt/postgresql@14

찾은 경로를 명령어에 입력해주었다

 

 

 

 

 

그 후

brew services restart postgresql@14

로 postgrsql을 재시작 해주고

 

brew services list

로 다시 서비스의 상태를 확인하면 ..!

 

 

안된다

대체 왜임

 

 

 

 

 

 

 

 

다시 찾아보니

512에러는 PostgreSQL 데이터베이스 클러스터가 손상되거나 초기화되어야 하는 상태라는 글을 발견

대체 왜?..

 

곰곰히 생각하다가

아직 db 구조를 제대로 만들기 전이니 시원하게 싹 날려버리고 다시 시작하자는 생각이 들었다.

 

 

 

initdb /opt/homebrew/var/postgresql@14

이 명령어는 postgresql 클러스터를 초기화 시키는 명령어이다.

클러스터가 생성이 되어있지 않거나, 손상되어 초기화가 필요한 상황에서 사용할 수 있다.

경로는 위에서 확인한 본인의 설치경로로 작성하면 됨!!

 

클러스터를 초기화 했을시 로컬 db에 있는 모든 데이터가 사라지니

중요한 정보가 있다면 미리 꼭 백업해놓고 진행할것!!!!!!

(로컬이 아닌 다른 서버에 올라가있는것들은 무관)

 

 

 

초기화 후

brew services restart postgresql@14

postgresql을 재시작하고

 

brew services list

로 다시 상태를 확인하면 ..!!

 

 

 

 

짜잔~

드디어.. 해결!!!!!!!!!!

 

글을 나름 간단하게 써서 그렇지 실제로는 두시간정도 걸렸다.

이렇게 또 한번의 삽질을 통해 0.1% 성장했다..... 고 생각ㅋ

 

 

경력이 쌓일수록 오류와 마주치는 횟수가 줄어들줄 알았는데

어떻게 된게 희안한 오류를 계속 만나게되는것 같다

블로그에 글을 작성하지 않아서 그렇지 육성으로 엥???하는 오류들이 엄청 많았다

이래서 개발자는 평생 공부해야하는 직업인건가

나름 좀 멋지고 갬성적인것 같다.

 

 

 

 

 

 

 

 


근데

prisma 명령어는 아직도 안됨

 

왜옹..

 

 

 

원래 postgresql에 접근할때 postgres 라는 슈퍼유저로 접근했었는데

아까 위에서 다른 사용자로 소유권을 변경해서 그런가? 하고 postgres 계정으로 db에 연결 시도함

psql -U postgres -d local_project

여기서 postgres는 사용자 이름이고 local_project는 내 db 이름이다!

 

 

 

저 명령어를 입력했더니

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "postgres" does not exist

띠용

postgres 사용자가 없다고 뜸

 

 

왜옹..

 

 

createuser -s postgres

명령어로 postgres라는 슈퍼 유저를 생성해줬다.

 

 

 

 

 

 

 

드디어 끝!!!

 

 

 

 

 

갑자기 왜 512 에러가 났는지,

postgres 유저가 어디로 사라졌는지........

차차 알아보고 추가로 글을 작성할 계획이다.

오늘도 화이팅!!