오류 코드 : 2013. 쿼리 중 MySQL 서버 연결이 끊어졌습니다


252

내가 가지고 쿼리 동안 MySQL 서버 2013 로스트 연결 : 오류 코드 내가 MySQL의 워크 벤치를 사용하여 테이블에 인덱스를 추가하려고 할 때 오류가 발생했습니다. 또한 긴 쿼리를 실행할 때마다 나타납니다.

시간 종료 값을 늘릴 수 있습니까?

답변:


473

새로운 버전의 MySQL WorkBench에는 특정 타임 아웃을 변경하는 옵션이 있습니다.

나를 위해 편집 → 환경 설정 → SQL 편집기 → DBMS 연결 읽기 시간 초과 (초) : 600

값을 6000으로 변경했습니다.

또한 전체 데이터 세트를 검색 할 때마다 제한을두기 때문에 선택하지 않은 제한 행은 번거 롭습니다.


2
이 제한을 99,999 초 이상 늘릴 수 있습니까? DBMS connection read time out필드는 숫자 5 개까지 허용하고, 0에 필드를 설정하는 기본 파라미터 (6백초)에 상당한다. (Windows 7 64-bit Ultimate, MySQL Workbench 5.2.47 CE)
— Franck Dernoncourt


4
편집 → 기본 설정 → SQL 쿼리
— Jon

7
다시 시작한 후 읽기 시간 초과가 6000으로 설정되어 있어도 오류 2013이 다시 표시되므로 해결 방법이 아닙니다.
— Davicus

4
Workbench를 다시 시작하고 열려있는 모든 쿼리 창을 먼저 닫으십시오!
— pimbrouwers 2016 년

32

comandline 옵션 net_read_timeout/ wait_timeout및 적절한 값 (초)으로 DB 서버를 시작하십시오 (예 :) --net_read_timeout=100.

참조를 위해 여기 와 여기 를 참조하십시오 .


1
이것은 정확하지만 대부분의
— 업업에

6
명령 행에서이 매개 변수를 어떻게 제공합니까? DB에 연결하려고 할 때 : mysql -u root -p --net_read_timeout = 60 또는 서비스를 시작하려고 할 때? sudo 서비스 mysql 시작? 두 곳 모두에서 그것은 오류를주고있다 : 알 수없는 변수 'net_read_timeout를'
— 카스 고엘

@VikasGoel 서버 측 매개 변수입니다. 즉 mysqld.
— Chloe

29

쿼리에 BLOB 데이터가 있는 경우이 답변에서 제안한대로my.ini 변경 사항 을 적용하여이 문제를 해결할 수 있습니다 .

[mysqld]
max_allowed_packet=16M

기본적으로이 값은 1M입니다 (허용되는 최대 값은 1024M입니다). 제공된 값이 1024K의 배수가 아닌 경우 가장 가까운 1024K의 배수로 자동 반올림됩니다.

참조 된 스레드는 MySQL 오류 2006 에 관한 것이지만 max_allowed_packet1M에서 16M으로 설정하면 긴 쿼리를 실행할 때 나타나는 2013 오류 가 수정되었습니다.

WAMP 사용자의 경우 : [wampmysqld]섹션 에서 플래그를 찾을 수 있습니다.


이것은 정확히 내 문제였습니다. 파일에서 데이터베이스 백업을 가져오고 MySQL Workbench가이 2013 오류와 "종료 코드 1로 작업 실패"를보고했습니다. 백업에 MySQL의 기본 max_allowed_packet 크기가 4M을 초과하는 큰 Blob 열이있는 것으로 나타났습니다. 이것을 늘리면 해결되었습니다. (MySQL 5.6 및 Workbench 6.2.3). 감사!
— zAlbee

이것은 나에게도 픽스였습니다. Windows 컴퓨터의 경우 256M으로 설정했지만
— smoore4

16M이 있었는데 가져 오기 파일에 여러 번 오류가 발생하여 32M으로 변경되어 작동했습니다.
— hakre

15

/ etc / mysql / cnf 파일에 다음을 추가하십시오.

innodb_buffer_pool_size = 64M

예:

key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
innodb_buffer_pool_size = 64M

6
파일 이름 /etc/mysql/cnf이 정확합니까? 그렇지 /etc/my.cnf않습니까?
— 피터 VARGA

12
SET @@local.net_read_timeout=360;

경고 : 다음은 원격 연결에서 적용 할 때 작동하지 않습니다.

SET @@global.net_read_timeout=360;

360이란 무엇입니까? Millisec, 초, 분?
— MasterJoe2

10

이 오류 메시지에는 세 가지 원인이있을 수 있습니다.

  1. 일반적으로 네트워크 연결 문제를 나타내며이 오류가 자주 발생하면 네트워크 상태를 확인해야합니다
  2. 때때로“쿼리 중”양식은 하나 이상의 쿼리의 일부로 수백만 행이 전송 될 때 발생합니다.
  3. 클라이언트가 서버에 초기 연결을 시도 할 때 발생할 수있는 경우는 거의 없습니다.

자세한 내용 은 >>

원인 2 :

SET GLOBAL interactive_timeout=60;

기본 30 초에서 60 초 이상으로

원인 3 :

SET GLOBAL connect_timeout=60;

2는이 오류를 나타냅니다-코드 : 1227. 액세스가 거부되었습니다. 당신이 필요 (중 적어도 하나)이 조작의 SUPER 권한 (들)
— MasterJoe2


8

mysql 설정 파일에서 'interactive_timeout'및 'wait_timeout'속성을 필요한 값으로 설정해야합니다.


이것은 나를 도와줍니다. my.cnf의 'interactive_timeout'이 100으로 설정되었습니다. 너무 짧습니다. 3600 초로 변경 한 후 문제가 해결되었습니다
— Thx

7

다음과 같이 MySQL의 올바른 기능에 필요한 많은 테이블을 재구성하고 innoDB 엔진을 재구성하는 MySQL 업그레이드를 수행하십시오 performance_schema.information_schema 등

쉘에서 아래 명령을 실행하십시오.

sudo mysql_upgrade -u root -p

오류는 MySQL Workbench 6.1.4 (그리고 잠시 후에 만)까지 나타나지 않았으며 6.1.6에서도 발생합니다 (몇 번만 사용한 후에도). 여러 서버를 다시 작성하는 것이 어떻게 수정되는지 확실하지 않습니다. 최근에 하나의 GUI에서만 나타나는 문제.
— Davicus

이것은 내 문제를 해결했습니다. 방금 Ansible을 사용하여 기존 데이터베이스에 데이터베이스를 설정했으며 문제가 발생했습니다. 이 명령을 실행하면 모든 것이 작동 상태로 복원됩니다.
— Jubz

4

나는 오래되었지만 Mac에서는 알고 있습니다.

1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.

4

편집-> 환경 설정-> SQL 편집기-> MySQL 세션에서 "읽기 시간 초과"시간 변경


3

편집 → 환경 설정 → SQL 쿼리에서 행 제한을 선택 취소하십시오.

mysql 구성 파일의 'interactive_timeout'및 'wait_timeout'속성을 필요한 값으로 설정해야하기 때문입니다.


3

큰 덤프 파일을 복원하는 동안이 문제가 발생하고 네트워크와 관련된 문제 (예 : localhost에서의 실행)가 내 솔루션보다 도움이 될 수있는 문제를 배제 할 수 있다면.

내 mysqldump에는 mysql이 계산하기에는 너무 큰 적어도 하나의 INSERT가 있습니다. show variables like "net_buffer_length";mysql-cli 안에 입력하여이 변수를 볼 수 있습니다 . 세 가지 가능성이 있습니다.

  • mysql에서 net_buffer_length를 늘리십시오-> 서버를 다시 시작해야합니다.
  • --skip-extended-insert인서트 당 한 줄씩 사용 하여 덤프 만들기 ->이 덤프는 읽는 것이 훨씬 좋지만 1GB보다 큰 덤프에는 적합하지 않습니다. 매우 느리기 때문입니다.
  • 확장 인서트 (기본값)로 덤프를 생성하지만 net-buffer_length를 제한하십시오 --net-buffer_length NR_OF_BYTES.

다음 mysqldump 명령을 사용했습니다. mysqldump --skip-comments --set-charset --default-character-set=utf8 --single-transaction --net-buffer_length 4096 DBX > dumpfile


2

.csv 파일을로드 할 때 동일한 문제가 발생했습니다. 파일을 .sql로 변환했습니다.

아래 명령을 사용 하여이 문제를 해결할 수 있습니다.

mysql -u <user> -p -D <DB name> < file.sql

이것이 도움이되기를 바랍니다.


2

여기에 다른 모든 솔루션이 실패하면 syslog (/ var / log / syslog 또는 이와 유사한)를 확인하여 쿼리 중에 서버의 메모리가 부족하지 않은지 확인하십시오.

innodb_buffer_pool_size가 스왑 파일을 구성하지 않고 실제 메모리에 너무 가까이 설정되었을 때이 문제가 발생했습니다. MySQL은 실제 메모리의 최대 약 80 %에서 innodb_buffer_pool_size의 데이터베이스 특정 서버 설정을 권장하며, 약 90 %로 설정하면 커널이 mysql 프로세스를 종료합니다. innodb_buffer_pool_size를 다시 약 80 %로 옮기고 문제가 해결되었습니다.


2

필자의 경우 연결 시간 초과 간격을 6000 이상으로 설정하면 작동하지 않습니다.

방금 워크 벤치에서 할 수있는 작업을 수행했습니다.

쿼리가 DBMS에서 데이터를 반환하는 데 걸리는 최대 시간입니다. 읽기 시간 초과를 건너 뛰려면 0을 설정하십시오.

Mac 환경 설정-> SQL 편집기-> MySQL 세션으로 이동-> 연결 읽기 시간 초과 간격을 0으로 설정하십시오.

그리고 그것은 작동합니다 😄


1

나는이 같은 문제에 직면했다. 큰 테이블에 외래 키가 있으면 시간이 걸리는 것 같습니다.

외래 키 선언없이 create table 문을 다시 실행하려고 시도했지만 제대로 작동했습니다.

그런 다음 테이블을 만든 후 ALTER TABLE 쿼리를 사용하여 외래 키 제약 조건을 추가했습니다.

이것이 누군가를 도울 수 있기를 바랍니다.


1

내 innodb_buffer_pool_size가 서버에서 사용 가능한 RAM 크기보다 크게 설정 되었기 때문에이 문제가 발생했습니다. 이로 인해 상황이 중단되었으며이 오류가 발생합니다. 수정은 my.cnf를 innodb_buffer_pool_size에 대한 올바른 설정으로 업데이트하는 것입니다.


1

워크 벤치 편집 → 환경 설정 → SQL 편집기 → DBMS 연결 읽기 시간 종료 : 최대 3000으로 이동하십시오. 오류가 더 이상 발생하지 않았습니다.


0

이동 :

편집-> 환경 설정-> SQL 편집기

여기에서 "MySQL 세션"그룹에 세 개의 필드가 표시되며 여기서 새 연결 간격 (초)을 설정할 수 있습니다.


0

방화벽 규칙이 MYSQL에 대한 연결을 차단하고있는 것으로 나타났습니다. 연결을 허용하기 위해 방화벽 정책을 해제 한 후 스키마를 성공적으로 가져올 수있었습니다.


0

나는 같은 문제가 있었지만 해결책은 너무 엄격한 권한을 가진 DB 사용자였습니다. 나는 테이블 Execute위에서 능력 을 허용해야했다 mysql. 더 이상 연결이 끊어지지 않도록 허용 한 후


0

인덱스 가 먼저 있는지 확인하십시오 .

SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'

0

데이터베이스의 테이블에 많은 행을 생성하는 저장 프로 시저를 실행하는 동안이 문제가 발생했습니다. 시간이 30 초 경계를 지난 직후에 오류가 발생하는 것을 볼 수있었습니다.

다른 답변의 모든 제안을 시도했습니다. 그러나 그 중 일부가 도움이되었다고 확신합니다. 실제로 실제로 작동하게 된 것은 Workbench에서 SequelPro로 전환하는 것이 었습니다.

Workbench에서 발견 할 수없는 클라이언트 측 연결이라고 생각합니다. 어쩌면 이것도 다른 사람을 도울 것입니까?


0

SQL Work Bench를 사용하는 경우 색인을 사용하여 테이블에 색인을 추가하고 색인을 추가하고 테이블에서 렌치 (스패너) 기호를 클릭하면 테이블에 대한 설정이 열립니다. 색인보기를 클릭하고 색인 이름을 입력 한 후 유형을 색인으로 설정하십시오. 색인 열에서 테이블의 기본 열을 선택하십시오.

다른 테이블의 다른 기본 키에 대해서도 동일한 단계를 수행하십시오.


0

SSH를 사용하여 MySQL 데이터베이스에 연결하는 사람들에게는 여기에 답이없는 것 같습니다. 다른 답변에서 제안한대로 1이 아닌 두 곳을 확인해야합니다.

워크 벤치 편집 → 환경 설정 → SQL 편집기 → DBMS

워크 벤치 편집 → 환경 설정 → SSH → 시간 종료

기본 SSH 시간 초과가 매우 낮게 설정되어 일부 시간 초과 문제가 발생했지만 일부는 아닙니다. 그런 다음 MySQL Workbench를 다시 시작하는 것을 잊지 마십시오!

마지막으로, my.conf + mysql restart를 통해 mysql 자체에서 wait_timeout & interactive_timeout 속성을 높이거나 mysql을 다시 시작하는 것이 옵션이 아닌 경우 전역 세트를 수행하도록 DB 관리자에게 문의하는 것이 좋습니다.

도움이 되었기를 바랍니다!


0

따라야 할 세 가지 사항 :

  1. 여러 쿼리에서 연결이 끊어 졌는지 여부
  2. MySQL에서 set query를 어떻게 사용합니까?
  3. 쿼리를 동시에 삭제 + 업데이트하는 방법은 무엇입니까?

답변:

  1. MySQL이 자체 정의자를 작성하므로 항상 정의자를 제거하십시오. 업데이트와 관련된 여러 테이블이 때때로 여러 쿼리에서 연결이 끊어짐을 나타내므로 단일 쿼리를 작성하려고합니다.
  2. 조건에 SET 값이 포함되지 않은 경우 DELETE 뒤에 항상 맨 위에 SET 값을 설정하십시오.
  3. 두 테이블 모두 다른 테이블에서 작업이 수행 된 경우 먼저 업데이트 삭제를 사용하십시오.

-1

에 대해 확인

OOM on /var/log/messages ,
modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ; 

도움이 되었기를 바랍니다


-1

이것은 일반적으로 "현재 버전의 MySQL 서버와 호환되지 않는다"는 것을 의미합니다. mysql_upgrade를 참조하십시오. 나는이 같은 문제에 부딪 쳤고 간단히 실행해야했습니다.

mysql_upgrade --password이 문서에는 "Mysql을 업그레이드 할 때마다 mysql_upgrade를 실행해야합니다"라고 나와 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.