mongodb 연결 에러: Exception opening socket

이승우·2024년 5월 4일

아직 완벽히 고쳐지진 않았지만 DB에 연결하지 못하는 치명적인 오류라서 일단 임시방편으로 해결한 후 포스팅하는 글이다. 원인은 찾았지만 아직 완벽히 해결하는 법은 못찾았다 ㅠ

잘만 연결되던 Db가 연결에 실패했다는 메시지가 떴다.

com.mongodb.MongoSocketOpenException: Exception opening socket

로그를 확인해본 결과 똑같은 코드(빌드)인데도 연결에 실패했다.

그래서 수동으로 몽고db서버를 열어보려 했는데, 마지막 메시지가 이거였다.
{"t":{"$date":"2024-05-04T18:27:51.681+09:00"},"s":"I", "c":"CONTROL", "id":23138, "ctx":"initandlisten","msg":"Shutting down","attr":{"exitCode":100}}
서버가 열리지 않고 바로 종료된다는 것.

어디서 부터 에러가 났는지 찾아보니, 이런 메시지도 있었다.
{"t":{"$date":"2024-05-04T18:27:51.676+09:00"},"s":"E", "c":"CONTROL", "id":20557, "ctx":"initandlisten","msg":"DBException in initAndListen, terminating","attr":{"error":"NonExistentPath: Data directory /data/db not found. Create the missing directory or specify another path using (1) the --dbpath command line option, or (2) by adding the 'storage.dbPath' option in the configuration file."}}

데이터 경로를 찾지 못했다

내가 내린 결론은 데이터가 저장되는 경로를 찾지 못했고, 연결에 실패했다는 것이다.

해결법

근데 왜..? 고친게 없었는디...

일단 임시방편으로 몽고서버에 수동으로 연결하는 코드로
mongod --dbpath ~/data/db
이 코드로 몽고db를 연결하고, 다시 빌드를 해보니 잘 됐다. 주의사항으로는 실행한 후, 실행을 취소하면 안된다. 실행(연결)중일 때 다시 빌드를 해야한다.

~/data/db는 원래 데이터들이 저장되던 경로를 지정해주면 된다.

이 방식은 임시방편으로 떼우는 방식이라, 나로써도 별로 내키지는 않는다. 자동으로 연결하는 법을 알아낸 후 다시 포스팅을 올려야겠다.

0개의 댓글