Home [Trouble Shooting] [DB] ERROR 2006 (HY000) MySQL server has gone away 에러 해결
Post
Cancel

[Trouble Shooting] [DB] ERROR 2006 (HY000) MySQL server has gone away 에러 해결

ERROR 2006 (HY000) MySQL server has gone away 에러 해결

Flask에서 MySQL을 이용하기 위해 Sqlalchemy 를 사용하던 도중 API 호출 시

ERROR 2006 (HY000) MySQL server has gone away

에러가 자주 발생하였다.

원인
① MySQL 과 연결에 오류가 있는 경우
② 패킷 전송에 문제가 있는 경우
③ 이전 연결 세션에 영향을 받은 경우

구글링해서 찾아본 결과, DB서버쪽의 설정값과 Flask client에서의 문제가 있을 수 있다.

MySQL 서버 설정하기

max_allowed_packet 값을 변경해주는 것인데,

max_allowed_packet 는 서버로 질의하거나 받게되는 패킷의 최대 길이를 나타내는 변수 값이다.

즉, client와 통신할 때 핸들링 할 수 있는 데이터 양을 의미한다.

1
$ SET GLOBAL max_allowed_packet=64*1024*1024;

이 컨맨드로 64MB로 max값을 수정했다.

영구적으로 수정하려면 myslq의 conf에서 설정을 변경해주어야한다. (my.ini 파일)

Client Sqlalchemy에서 설정 값 부여하기

1
engine = db.create_engine("mysql+pymysql://root:PASSWORD@IP:3306/DBNAME", pool_pre_ping=True)

engine을 선언할 때 pool_pre_ping 옵션 값에 True를 부여한다. pool_pre_ping 옵션은 Disconnect handling을 해결하는 옵션인데, DB서버 접속 전 “select 1” 과 같은 쿼리문을 ping으로 날려서 connection을 확인하고 연결을 진행한다.


참고 : https://tjddnjs.tistory.com/69, https://blog.dork94.com/195

This post is licensed under CC BY 4.0 by the author.