오류 코드 : 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.