[mysql] 큰 SQL 파일을 가져올 때 MySQL 서버가 사라졌습니다

phpMyAdmin을 통해 큰 SQL 파일을 가져 오려고했지만 오류가 계속 표시되었습니다.

‘MySql 서버가 사라졌습니다’

무엇을해야합니까?



답변

여기에 명시된 바와 같이 :

MySQL 서버가 사라진 가장 일반적인 두 가지 이유는 다음과 같습니다 (오류 2006).

서버가 시간 초과되어 연결을 종료했습니다. 어떻게 고치는 지:

  1. mysqld의 my.cnf 구성 파일에서 wait_timeout 변수가 충분히 큰지 확인하십시오. Debian : sudo nano
    /etc/mysql/my.cnf
    에서 wait_timeout = 600초를 설정하고 (2006 오류가 사라질 때이 값을 조정 / 감소 할 수 있음)을 설정하십시오 sudo
    /etc/init.d/mysql restart
    . 확인하지는 않았지만 wait_timeout의 기본값은 약 28800 초 (8 시간)입니다.

  2. 서버가 잘못되었거나 너무 큰 패킷을 삭제했습니다. mysqld가 너무 크거나 부정확 한 패킷을 얻는 경우, 클라이언트에 문제가 있다고 가정하고 연결을 닫습니다. my.cnf 파일에서 max_allowed_packet의 값을 늘려 최대 패킷 크기 제한을 늘릴 수 있습니다. 데비안에서 : sudo nano
    /etc/mysql/my.cnf
    , 세트 max_allowed_packet = 64M(당신은 / 조정할 오류 2006 사라 경우이 값을 줄일 수 있습니다) 다음, sudo
    /etc/init.d/mysql restart
    .

편집하다:

MySQL 옵션 파일에는 명령을 주석으로 사용할 수 없습니다 (예 : php.ini 등). 당신은에서 변경 / 비틀기를 입력해야합니다 그래서 my.cnfmy.ini과에 배치 mysql/data같은 옵션의 적절한 그룹 아래, 디렉토리 또는 다른 경로 중 하나로 [client], [myslqd]등 예를 들어 :

[mysqld]
wait_timeout = 600
max_allowed_packet = 64M

그런 다음 서버를 다시 시작하십시오. 값을 얻으려면 mysql 클라이언트를 입력하십시오.

> select @@wait_timeout;
> select @@max_allowed_packet;


답변

나를 위해이 솔루션이 작동하지 않아서 실행했습니다.

SET GLOBAL max_allowed_packet=1073741824;

내 SQL 클라이언트에서.

MYSql 서비스가 실행중인 상태에서이를 변경할 수 없으면 서비스를 중지하고 “my.ini”파일에서 변수를 변경해야합니다.

예를 들면 다음과 같습니다.

max_allowed_packet=20M


답변

XAMPP에서 작업하는 경우 MySQL 서버에서 다음 변경 사항으로 인한 문제를 해결할 수 있습니다.

my.ini 파일을 엽니 다. my.ini 위치는 (D : \ xampp \ mysql \ bin \ my.ini)입니다.

다음 변수 값을 변경하십시오.

max_allowed_packet = 64M
innodb_lock_wait_timeout = 500


답변

기본값으로 실행하는 경우 mysql 구성을 최적화 할 공간이 충분합니다.

내가 권장하는 첫 번째 단계는 max_allowed_packet을 128M으로 늘리는 것입니다.

그런 다음 MySQL Tuning Primer 스크립트를 다운로드하여 실행하십시오. 성능 향상을 위해 구성의 여러 측면에 권장 사항을 제공합니다.

또한 MySQL과 PHP에서 시간 초과 값을 조정하는 방법을 살펴보십시오.

가져 오는 파일의 크기 (파일 크기)는 어느 정도이며 PHPMyAdmin 대신 mysql 명령 줄 클라이언트를 사용하여 파일을 가져올 수 있습니까?


답변

OS X에서 MAMP를 사용하는 경우 max_allowed_packetMySQL 템플리트 에서 값 을 변경해야합니다 .

  1. 파일> 템플릿 편집> MySQL my.cnf 에서 찾을 수 있습니다.

  2. 그런 다음을 검색 max_allowed_packet하고 값을 변경하고 저장하십시오.


답변

이 짧은 /etc/mysql/my.cnf 파일로 문제를 해결했습니다.

[mysqld]
wait_timeout = 600
max_allowed_packet = 100M


답변

이것이 발생할 수있는 다른 이유는 메모리가 부족하기 때문입니다. / var / log / messages를 확인하고 mysqld가 컴퓨터보다 많은 메모리를 할당하도록 my.cnf가 설정되어 있지 않은지 확인하십시오.

mysqld 프로세스는 실제로 커널에 의해 종료 된 후 “safe_mysqld”프로세스에 의해 다시 시작될 수 있습니다.

헤드 룸이 무엇인지 확인하기 위해 top을 사용하고 실행중인 메모리 할당을 확인하십시오.

my.cnf를 변경하기 전에 백업하십시오.