[트러블슈팅] Communications link failure, Spring Boot 배포 시 DB 연결 URL이 바뀌지 않는 문제 해결

2025. 10. 29. 01:36·▪️트러블슈팅

 

 

7월에 EC2로 배포했었던 나의 소중한 프로젝트...

청구서를 보고 눈물을 머금으며 관련 인스턴스를 싹 지웠었다

근데 이제 다시 실사용자를 받아볼 때가 되어서 이제서야 또 배포를 하게 되었다.

 

그래서 차근차근 하고 있었다. 

rds로 mysql 다시 배포하고, 그 이후에 ec2로 스프링부트 배포하고

별 문제 없이 마지막 단계까지 왔는데 스프링부트 jar 파일 실행할 때마다 이런 오류가 발생했다.

 

2025-10-27T17:55:43.036Z ERROR 2319 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

com.mysql.cj.jdbc.exceptions.CommunicationsException: 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.
        at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:175) ~[mysql-connector-j-8.1.0.jar!/:8.1.0]
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-j-8.1.0.jar!/:8.1.0]
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:819) ~[mysql-connector-j-8.1.0.jar!/:8.1.0]
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:440) ~[mysql-connector-j-8.1.0.jar!/:8.1.0]
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239) ~[mysql-connector-j-8.1.0.jar!/:8.1.0]
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188) ~[mysql-connector-j-8.1.0.jar!/:8.1.0]

 

 

이렇게 기다란 오류가 생성되고 결국에는 서버가 실행이 되긴 했다.

근데 그래도 데이터베이스 연결이 안 되면 무소용이기에... 이걸 해결해야만 했는데

환경변수 지정을 안 해줬나 해서 nano로 bash파일에 넣어두기도 하고 했는데 여전히 안 됐다. 

 

그래서!! 보안그룹이 문제인가 하고 똑같은 걸 몇 번을 수정했다.

 

그래서 우분투 서버 내에 mysql client를 깔아서 여기서 주소로 잘 접속이 되는지 봤다. (잘 된다면 보안그룹에는 문제가 없는 것일테니까) 

sudo apt install mysql-client 로 mysql을 깔고

 

mysql -h 엔드포인트주소 -u 사용자이름 -p 하고 패스워드 입력했더니

연결이 잘 되더래요

그럼 보안그룹 문제도 아닌 거잖아요...

 

 

근데 오류 로그에서 발견한 문제점이 있었다


오류 로그에 뜬 데이터베이스 url (엔드포인트) 와 지금 내 데이터베이스 엔드포인트가 달랐다

 

Caused by: java.net.UnknownHostException: ecostep-db.cruikuqa2yrq.ap-northeast-2.rds.amazonaws.com: Name or service not known

스프링부트 로그에 뜬 오류 중에서 이곳...

현재 데이터베이스는 database-1027로 시작하는데 
얘는 ecostep-db로 시작한다

 

이걸 어디서 많이 봤나 했더니 내가 7월에 배포했었던 rds 엔드포인트 이름이었다. . . 

결국... 스프링부트 jar 파일이 수정 전의 jar 파일로 들어가고 있던 것이었음을 발견했다

 

 

문제를 확실히 하기 위해서 

 jar xf ecoStep-1.0-SNAPSHOT.jar BOOT-INF/classes/application.yml
cat BOOT-INF/classes/application.yml

라는 명령어를 사용했다. (지피티의 도움을 받음) 

 

이 명령어들이 뭐냐면..

 

1) jar xf ecoStep-1.0-SNAPSHOT.jar BOOT-INF/classes/application.yml

JAR 파일(일종의 zip 파일) 안에서 BOOT-INF/classes/application.yml 이 파일만 꺼낸다 (xf 의미: x = extract f = file)

 

2) cat BOOT-INF/classes/application.yml

방금 꺼내온 파일의 내용을 터미널에 출력해서 확인한다 (cat = 파일 내용 보기)

 

 

명령어를 사용해보니 진짜 이 jar 파일 내의 application.yml은 예전 url을 담고 있었다.

그렇다면 왜 아무리 파일을 다시 clean build하고 scp로 덮어씌워도 예전 파일이 실행됐던 걸까...

보통 gradlew clean build를 하면 이전의 파일 설정 내용을 없애고 다시 빌드를 해줘서 이렇게 겹치지 않는데 (지금이 세 번째 배포인데 두 번째 배포 때는 안 이랬다) 지금 Gradle에서 jar 관련 캐시가 꼬여 있는 것 같다 

 

 

그래서 프로젝트의 jar를 빌드할 때,

gradlew clean build 대신 gradlew bootJar을 써서 해결했다. 

 

 

둘의 차이점은... 

gradlew clean build: 프로젝트의 모든 기본 빌드 작업 수행

gradlew bootJar: 실행 가능한 JAR 파일 생성 작업만 수행

 

gradle 시스템이 application.yml 파일의 변경사항을 감지 못하고 있다가 

bootJar을 단독으로 명시해서 그제서야 다시 jar 파일을 빌드할 수 있었던 것 같다... 

 

 

그리고 다시 scp 하고 실행해보니 잘 됐다... ㅎㅎ

 

'▪️트러블슈팅' 카테고리의 다른 글

[트러블슈팅] 'SQL Exception ... incompatible' DB 타입 불일치 오류  (0) 2025.11.18
[트러블슈팅] @Value 어노테이션 오류 / application.yml 값 인식 실패  (0) 2025.05.07
[트러블슈팅] Firebase & Google OAuth2 로그인 / 액세스 차단 문제 해결  (0) 2025.04.30
[트러블슈팅] 서버와 데이터베이스의 시간대 차이 문제 / UTC, serverTimezone  (0) 2025.03.25
[트러블슈팅] The requestURI was rejected because it can only contain printable ASCII characters  (0) 2025.03.25
'▪️트러블슈팅' 카테고리의 다른 글
  • [트러블슈팅] 'SQL Exception ... incompatible' DB 타입 불일치 오류
  • [트러블슈팅] @Value 어노테이션 오류 / application.yml 값 인식 실패
  • [트러블슈팅] Firebase & Google OAuth2 로그인 / 액세스 차단 문제 해결
  • [트러블슈팅] 서버와 데이터베이스의 시간대 차이 문제 / UTC, serverTimezone
cosmo225
cosmo225
개발자로 향하는 길 👽
  • cosmo225
    to cosmo!
    cosmo225
  • 전체
    오늘
    어제
    • 분류 전체보기 (35)
      • ▪️Spring Boot (11)
      • ▪️트러블슈팅 (7)
      • ▪️CS 스터디 (8)
      • ▪️알고리즘 (2)
      • ▪️프로그래밍 (2)
      • ▪️Git (3)
      • ▪️etc (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래밍
    Spring
    깃허브
    CS
    배포
    개발
    TIL
    github
    스프링부트
    springboot
    java
    Programming
    GIT
    공부
    스프링
    oauth2
    Study
    컴퓨터
    백엔드
    데이터베이스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
cosmo225
[트러블슈팅] Communications link failure, Spring Boot 배포 시 DB 연결 URL이 바뀌지 않는 문제 해결
상단으로

티스토리툴바