[에러 해결] JDBCConnectionException: unable to obtain isolated JDBC connection

leejk1072·2025년 1월 1일

SpringBoot

목록 보기
4/4

어제 카카오 개발자분의 인터뷰 영상을 봤는데, 그분이 오류를 일부러 내보라고 하시더군요. 그때는 별생각 없이 음 그런가보다.. 하고 넘겼는데, 그날 바로 오류의 소중함을 깨달아버렸지 뭡니까....🤷

✓ 프로젝트 환경 & 문제 상황

현재 진행 중인 프로젝트에서 기초 환경 세팅을 맡았습니다.
비교적 간단한 작업이라 가볍게 시작을 했습니다. 응답 형식, 에러 처리, 디렉터리 등을 설정하고 마지막으로 로컬 DB 연결 확인만 하면 끝나는 상황이었습니다.

그런데 갑자기 로컬 DB 연결이 안된다는 겁니다 ㅎ

org.hibernate.exception.JDBCConnectionException: 
unable to obtain isolated JDBC connection 
[Communications link failure]

The last packet sent successfully to the server was 0 milliseconds ago. 
The driver has not received any packets from the server.

아무리 뜯어봐도 잘못 설정한 부분이 없었단 말이죠
아니 내가 무슨 도커를 띄웠냐 복잡한 걸 했냐..?
DB 연결이 안된다니 이게 무슨 일인가 싶었습니다.

✓ 문제 해결을 위한 3가지 시도

1. 히카리풀 설정 구체화
2. mysql my.cnf bind-address로 외부 접속 허용하기
3. 처음부터 재설정(프로젝트 재생성, mysql 삭제 후 재설치)

근데 사실 이 해결책들 모두 딱히 기대는 안했어요. 하면서도 아 이거 아닌데 싶었음

다른 분들은 이 에러가 거의 오타 때문이던데 나는 틀린 부분이 없어서 진짜 너무 답답했음.
뭔 짓을 해도 에러 로그가 똑같아서 두배로 답답했습니다.

✓ 원인 발견

힘 빠져서 침대에 누워 천장을 보고 있는데, 예전에 학교 수업에서 교수님이 "디버깅을 잘 해야 한다"고 하셨던 말이 갑자기 떠오른겁니다..
저는 이 말씀이 갑자기 왜 떠오른걸까요...? 지금 생각해보니까 좀 웃김


그래서 히카리풀 로그를 뽑아내는 디버깅을 작성하고 실행해보았습니다.

니가 왜 거기서 나와..

몇 주 전에 다른 프로젝트에서 CICD 설정을 하면서 배포 환경의 DB URL을 환경 변수로 설정해두었는데, 이를 수정하지 않은 채로 실행하다 보니 당연히 DB 연결이 되지 않았던 것입니다.

그러면 이제 해결책은 매우 간단하죠?

✓ 해결책


~/.zshrc 파일을 편집하기 위해 터미널에서 아래 명령어를 입력합니다.

nano ~/.zshrc

~/.zshrc 파일이 열리면, 거기에서 환경 변수로 설정된 부분을 찾아 모두 지워줍니다.
편집을 마친 후, 파일을 저장하고 종료합니다.
변경 사항을 적용하기 위해, 아래 명령어로 ~/.zshrc 파일을 다시 로드합니다.

source ~/.zshrc

이렇게 하면 설정한 환경 변수들이 제거되고, 새롭게 적용된 상태로 다시 실행됩니다.


네 되네요 ^___^

✓ 느낀점

평소에는 에러가 나면 로그를 확인하고 구글링만 해도 대부분 해결되었기 때문에 디버깅 습관이 부족했습니다. 그로 인해 이번 에러는 생각보다 시간이 오래 걸렸습니다. 그래도 프로젝트 세팅을 제가 맡게 되어 이런 부분도 알게 된 것이 참 다행입니다. 프로젝트 초반이라서 할 수 있었던 해결책을 모두 적용해볼 수 있었고, 내가 잘 알고 있다고 생각했던 부분에서도 오류가 나면서 더 깊이 이해할 수 있었습니다. 이번 경험을 통해 ✨오류의 중요성✨을 깨닫게 되었고, 앞으로는 문제를 정확히 파악하기 위해 디버깅하는 습관을 길러야겠습니다.

0개의 댓글