[트러블 슈팅] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
우아한테크코스

[트러블 슈팅] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

상황

DB와 was를 연결하는 과정에서 에러가 발생했다. 서버가 DB에 패킷을 보냈으나, JDBC Driver가 DB로부터 어떠한 패킷도 받지 못했다는 에러메시지가 출력되었다.

원인

Mysql 설정 파일에서 bind-address를 제대로 설정해주지 않아 생긴 문제였다. 설정 파일은 /etc/mysql/mysql.conf.d 경로 내에 mysqld.cnf라는 이름으로 존재한다. 아래 명령어를 입력하면 리눅스 내 my.cnf 설정파일이 어디에 존재하는지 알 수 있다.

mysqld --verbose --help | grep -A 1 'Default options'

해결 방법

설정파일에 들어가면 bind-address 값이 127.0.0.1로 되어 있다. 이것을 0.0.0.0 으로 변경한 뒤 mysql을 재시작하면 된다.

mysqld.cnf

sudo service mysql restart # mysql 재시작

부연 설명을 하자면, 127.0.0.1은 localhost를 의미한다. 즉, bind-address 디폴트 값이 127.0.0.1이기에 localhost에서 보내는 요청만 받겠다는 뜻이다. 이것을 0.0.0.0으로 바꿔주어야 비로소 외부에서 보내는 요청을 받을 수 있게 된다.

 

이 외에도 application.yml 파일에 DB url을 잘못 입력한 경우 위 에러가 발생한다고 한다.