DEV WIKI
백엔드 · 오류·증상

Lost connection to MySQL server during query

MySQL 오류 2013을 식별하고 쿼리 응답 중 연결이 끊긴 구간을 확인하는 방법을 설명합니다.

빠른 답변

우선 확인할 원인
오류 번호 2013 또는 `Lost connection to MySQL server during query`가 표시되면 MySQL 클라이언트 오류 `CR_SERVER_LOST`입니다. 클라이언트가 쿼리의 전체 응답을 받지 못한 상태이므로 서버 재시작 여부, 오류 시각의 서버 로그, 네트워크 시간 제한, 쿼리와 패킷 크기를 순서대로 확인합니다.
먼저 확인할 항목
현재 화면 또는 로그의 오류 번호가 `2013`인지 확인합니다.
적용 범위
현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우
출처
MySQL
출처 확인일
2026-08-29
최종 검토
2026-08-29
수정일
2026-08-29
관련 기술
오류·수정 제보 (새 창에서 열림)

현재 증상

  • 애플리케이션 오류 메시지

먼저 확인할 항목

현재 화면 또는 로그의 오류 번호가 `2013`인지 확인합니다.

현재 화면 또는 로그의 메시지가 `Lost connection to MySQL server during query`인지 확인합니다.

오류 시각과 실행한 쿼리, 요청 또는 배치 작업 식별자를 기록합니다.

서버 오류 로그와 uptime에서 쿼리 실행 중 서버가 종료되거나 다시 시작됐는지 확인합니다.

같은 쿼리의 요청 크기와 서버·클라이언트의 패킷 제한을 비교합니다.

피해야 할 조치

주의

  • 실행 결과를 확인하지 않은 채 쓰기 쿼리를 자동 재시도하지 않습니다.
  • 원인을 확인하기 전에 네트워크 시간 제한이나 `max_allowed_packet`을 임의로 크게 늘리지 않습니다.
  • 오류 로그와 SQL 값을 공유할 때 비밀번호, 인증 정보, 개인정보를 제거합니다.

환경별 원인과 조치

증상

MySQL 클라이언트에서 다음 오류 메시지가 표시됩니다.

Lost connection to MySQL server during query

오류 식별

  1. 현재 화면 또는 로그에서 오류 번호를 확인합니다.
  2. 오류 번호가 2013인지 비교합니다.
  3. 오류 메시지가 Lost connection to MySQL server during query인지 비교합니다.
  4. 오류 번호와 메시지가 일치하면 심볼을 CR_SERVER_LOST로 식별합니다.

이 오류는 클라이언트가 쿼리를 서버에 보낸 뒤 전체 응답을 받지 못한 상태입니다. 쿼리를 보내기 전에 연결을 사용할 수 없었던 오류 2006과는 관찰 구간이 다릅니다. 오류 2006이라면 MySQL server has gone away 문서를 확인합니다.

확인 순서

  1. 오류 시각, 실행한 쿼리, 요청 또는 배치 작업 식별자를 기록합니다.
  2. 서버 오류 로그와 uptime을 비교해 쿼리 실행 중 서버가 종료되거나 다시 시작됐는지 확인합니다.
  3. 특정 쿼리에서만 발생하면 요청 크기와 서버·클라이언트의 패킷 제한을 비교합니다.
  4. 장시간 쿼리에서만 발생하면 클라이언트 읽기 시간 제한과 중간 네트워크 장비의 시간 제한을 확인합니다.
  5. 여러 쿼리에서 같은 시각에 발생하면 서버·클라이언트 사이의 네트워크 단절과 DNS 이름 확인 상태를 확인합니다.

다음 읽기 전용 조회는 서버가 마지막으로 시작된 뒤의 시간과 현재 제한값을 확인합니다.

SHOW GLOBAL STATUS LIKE 'Uptime';SHOW GLOBAL VARIABLES LIKE 'wait_timeout';SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet';

이 값만으로 원인을 확정할 수는 없습니다. 오류 시각의 서버 로그, 애플리케이션 로그, 쿼리 크기와 함께 비교합니다.

재시도 전 확인

  • 쓰기 쿼리가 서버에서 실행된 뒤 응답만 유실됐을 수 있으므로 실행 결과를 먼저 확인합니다.
  • 중복 실행에 안전한 작업인지 확인한 뒤 재시도 횟수와 간격을 제한합니다.
  • 시간 제한과 패킷 제한을 바꾸기 전에 실제 관찰값이 현재 제한을 넘었는지 확인합니다.

SQLSTATE 참고

MySQL 클라이언트 오류의 SQLSTATE 값은 항상 HY000이므로, 이 오류를 다른 클라이언트 오류와 구별하는 기준으로 사용하지 않습니다.

출처

참고 자료

MySQL :: MySQL 8.4 Error Reference :: 3 Client Error Message Reference (새 창에서 열림)

MySQL · 공식 자료 · 확인 범위: 오류 번호 2013의 심볼은 CR_SERVER_LOST입니다., 오류 번호 2013의 메시지는 `Lost connection to MySQL server during query`입니다., 클라이언트 오류의 SQLSTATE 값은 항상 `HY000`이므로 오류를 구별하는 기준으로 사용할 수 없습니다. · 확인일: 2026-08-29

MySQL :: MySQL 8.4 Reference Manual :: B.3.2.7 MySQL server has gone away (새 창에서 열림)

MySQL · 공식 자료 · 확인 범위: CR_SERVER_LOST는 클라이언트가 쿼리의 전체 응답을 받지 못한 상태를 나타냅니다., 서버 또는 클라이언트 시간 제한, 큰 패킷, 이름 확인 실패, 서버 종료와 재시작이 연결 중단 원인 후보입니다., 서버 오류 로그와 uptime은 서버 종료 또는 재시작 여부를 확인하는 자료입니다. · 확인일: 2026-08-29