MySQL server has gone away
MySQL 오류 2006을 식별하고 쿼리를 보내기 전에 연결을 사용할 수 없어진 이유를 확인하는 방법을 설명합니다.
빠른 답변
- 우선 확인할 원인
- `MySQL server has gone away`는 오류 번호 2006, 심볼 `CR_SERVER_GONE_ERROR`입니다. 클라이언트가 서버에 쿼리를 보내지 못한 상태이므로 연결의 유휴 시간, `wait_timeout`, 애플리케이션의 연결 수명, 서버 재시작 여부를 먼저 확인합니다.
- 먼저 확인할 항목
- 현재 화면 또는 로그의 오류 번호가 `2006`인지 확인합니다.
- 적용 범위
- 현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우
- 출처
- MySQL
- 출처 확인일
- 2026-08-29
- 최종 검토
- 2026-08-29
- 수정일
- 2026-08-29
- 정정 이력
- 2026-07-29 이후 기록 없음
- 관련 기술
현재 증상
- 애플리케이션 오류 메시지
먼저 확인할 항목
현재 화면 또는 로그의 오류 번호가 `2006`인지 확인합니다.
현재 화면 또는 로그의 메시지가 `MySQL server has gone away`와 일치하는지 확인합니다.
심볼을 확인할 수 있으면 `CR_SERVER_GONE_ERROR`인지 확인합니다.
마지막 정상 쿼리 시각과 오류가 난 쿼리 시각의 간격을 확인합니다.
서버 uptime과 오류 로그에서 연결 사이에 서버가 종료되거나 다시 시작됐는지 확인합니다.
피해야 할 조치
주의
- 연결이 유효한지 확인하지 않은 채 같은 연결 객체를 계속 재사용하지 않습니다.
- 원인을 확인하기 전에 `wait_timeout`을 임의로 크게 늘리지 않습니다.
- 실행 결과를 확인하지 않은 쓰기 작업을 자동 재시도하지 않습니다.
환경별 원인과 조치
오류 식별
현재 화면 또는 로그에서 오류 번호와 메시지 문자열을 확인합니다.
- 오류 번호가
2006인지 확인합니다. - 메시지가
MySQL server has gone away와 일치하는지 확인합니다. - 코드에서 심볼을 확인할 수 있으면
CR_SERVER_GONE_ERROR인지 확인합니다.
이 값들이 일치하면 MySQL 클라이언트 오류 번호 2006으로 식별합니다.
MySQL 공식 문서에서는 CR_SERVER_GONE_ERROR를 클라이언트가 서버에 쿼리를 보내지 못한 상태로 구분합니다. 쿼리를 보낸 뒤 전체 응답을 받지 못했다면 오류 2013입니다. 해당 문구가 보이면 Lost connection to MySQL server during query 문서를 확인합니다.
확인 순서
- 마지막 정상 쿼리 시각과 오류 시각 사이의 유휴 시간을 확인합니다.
- 서버의
wait_timeout과 애플리케이션 연결 풀의 최대 연결 수명을 비교합니다. - 서버 uptime과 오류 로그에서 연결 사이에 서버가 종료되거나 다시 시작됐는지 확인합니다.
- 애플리케이션이 이미 닫힌 연결 객체를 다시 사용했는지 확인합니다.
- 큰 쿼리나 BLOB 전송에서만 발생하면 서버·클라이언트의 패킷 제한과 요청 크기를 비교합니다.
다음 읽기 전용 조회로 현재 값을 확인할 수 있습니다.
SHOW GLOBAL STATUS LIKE 'Uptime';SHOW GLOBAL VARIABLES LIKE 'wait_timeout';SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet';wait_timeout을 늘리는 것만으로 연결 관리 오류, 서버 재시작, 패킷 초과, 네트워크 단절은 해결되지 않습니다. 관찰값과 오류 시각의 로그를 확인한 뒤 애플리케이션의 연결 재생성 조건을 수정합니다.
재시도 전 확인
- 같은 연결을 다시 사용하지 말고 클라이언트 라이브러리의 연결 유효성 검사와 새 연결 생성 동작을 확인합니다.
- 쓰기 작업은 서버에서 실행됐는지 확인한 뒤 중복 실행에 안전한 경우에만 제한적으로 재시도합니다.
- 비밀번호, 연결 문자열, 쿼리 값에 포함된 개인정보는 공유 로그에서 제거합니다.
참고
MySQL은 클라이언트 오류의 SQLSTATE 값을 항상 HY000으로 설명하므로, 이 값만으로는 다른 클라이언트 오류와 구분할 수 없습니다.
출처
참고 자료
MySQL · 공식 자료 · 확인 범위: "MySQL server has gone away"의 오류 번호는 2006이고 심볼은 CR_SERVER_GONE_ERROR입니다., 클라이언트 오류의 SQLSTATE 값은 항상 HY000입니다. · 확인일: 2026-08-29
MySQL · 공식 자료 · 확인 범위: CR_SERVER_GONE_ERROR는 클라이언트가 서버에 쿼리를 보내지 못한 상태를 나타냅니다., 가장 흔한 원인은 서버가 시간 제한 후 연결을 닫은 경우입니다., 서버의 wait_timeout, 서버 종료 또는 재시작, 큰 패킷과 네트워크 문제를 원인 후보로 확인할 수 있습니다. · 확인일: 2026-08-29