데이터베이스 일반 오류 : 2006 MySQL 서버가 사라졌습니다


24

최근에 어떤 유형이든 상관없이 콘텐츠를 추가하려고 할 때마다 오류가 발생하기 시작했습니다. 이것은 브라우저에 나타나는 오류입니다.

예외를 처리하는 동안 잡히지 않은 추가 예외가 발생했습니다.

원래 PDOException : SQLSTATE [HY000] : 일반 오류 : 2006 MySQL 서버가 사라졌습니다 : {comment}에서 SELECT COUNT (cid) WHERE status = : status; comment_count_unpublished ()의 배열 ([: status] => 0) (/ Applications / MAMP / htdocs / modules / comment / comment.module의 313 행)

추가

PDOException : SQLSTATE [HY000] : 일반 오류 : 2006 MySQL 서버가 사라졌습니다 : INSERT INTO {watchdog} (uid, 유형, 메시지, 변수, 심각도, 링크, 위치, 참조 자, 호스트 이름, 타임 스탬프) VALUES (: db_insert_placeholder_0, : db_insert_placeholder_1 , : db_insert_placeholder_2, : db_insert_placeholder_3, : db_insert_placeholder_4, : db_insert_placeholder_4, : db_insert_placeholder_5, : db_insert_placeholder_6, : db_insert_placeholder_7, : db_insert_placeholder_8, : db_insert_placeholder_9); 배열 ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] => % type :! 함수의 % message (% file의 줄 % line) [: db_insert_placeholder_3] => a : 6 : { s : 5 : "% type"; s : 12 : "PDOException"; s : 8 : "! message"; s : 154 : "SQLSTATE [HY000] : 일반 오류 : 2006 MySQL 서버가 사라졌습니다 : {comment}에서 count (cid)를 선택하십시오. WHERE status = : status; 배열 ([: status] = & gt; 0) "; s : 9 :"% function "; s : 27 :"comment_count_unpublished () "; s : 5 :"% file "; s : 56 :"/ Applications / MAMP /htdocs/modules/comment/comment.module";s:5:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http : // localhost : 8888 /? q = node % 2Fadd % 2Farcade-project & amp ; dblog_watchdog () (/ Applications / MAMP / htdocs / modules / dblog /의 154 행)에서 [: db_insert_placeholder_7] => http : // localhost : 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) dblog.module).

또한 PHP 오류 파일에 다음 오류가 발생합니다.

PHP 치명적인 오류 : 'SQLSTATE [HY000] :'SQLSTATE [HY000] 메시지와 함께 'PDOException'예외가 발생했습니다. /Applications/MAMP/htdocs/includes/database/database.inc:2136

스택 추적 :
0 /Applications/MAMP/htdocs/includes/database/database.inc(2136) : PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664) : DatabaseStatementBase- > execute (배열, 배열)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315) : DatabaseConnection-> query ( 'SELECT expire, ...', Array, Array)
3 / Applications / MAMP / htdocs / includes / lock.inc (167) : db_query ( 'SELECT expire, ...', Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146) : lock_may_be_available ( 'theme_registry : ...' )
5 /Applications/MAMP/htdocs/includes/theme.inc(447) : lock_acquire ( 'theme_registry : ...')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427) : ThemeRegistry-> 세트 ( 정렬)
7 [내부 함수] : DrupalCacheArray-> __ destruct ()
8 {main}이 2136 행의 /Applications/MAMP/htdocs/includes/database/database.inc에 발생했습니다.

이 오류 메시지를 해독하는 데 약간의 문제가 있습니다. 아무도 여기서 무슨 일이 일어나고 있는지 이해하도록 도와 줄 수 있습니까?

답변:


31

이 오류는 max_allowed_packetMySQL 서버의 my.cnf 파일에서 설정 이 충분하지 않기 때문에 발생 합니다.

필자의 경험에서 MAMP의 표준 기본값은 1M이며 일반적으로 Drupal에 충분하지 않습니다 (특히 생성되는 캐시 문자열의 크기를 고려할 때).

해당 설정을 점차적으로 증가시켜 오류가 사라지는 지 확인하십시오. 빠른 Google 검색을 통해 MAMP에서 어떻게하는지 알 수 있습니다.


다행히 내 사례는 10 개 범주 중 1 회에 해당하지 않았습니다. 당신의 추천은 매력처럼 작동했습니다! 감사!
Mike2012

Windows에서 동일한 오류가 발생합니다. 아파치, MySQL과 로컬 PHP 스택을 구성했습니다 ... 인도하십시오
Prerit 모한

공유 호스팅의 경우 어떻게해야합니까?
mohammed amine bourkadi

호스트에게 연락하여 변경을 요청하십시오. 그들이 할 수 없다면,이 호스트가 당신에게 @mohammedaminebourkadi에 적합한 지 결정해야합니다.
Clive

6

이 MySQL / MariaDB 오류 :

오류 : 2006 ( CR_SERVER_GONE_ERROR)-MySQL 서버가 사라졌습니다

기본적으로 클라이언트가 서버에 질문을 보낼 수 없음 을 의미 합니다 .

일시적 결함, 너무 크거나 잘못된 SQL 쿼리, 서버 구성 오류 또는 호스팅 제공 업체의 제한으로 인해 발생할 수 있습니다.

일반적으로이 오류는 다음과 같은 여러 가지 결과로 발생할 수 있습니다.

  • 서버에 대한 쿼리가 잘못되었거나 너무 큼

    솔루션 : 변수를 늘리십시오max_allowed_packet .

    참고 : 변수가 [mysqld]아닌 섹션 아래에 있는지 확인하십시오 [mysql].

    참고 : MySQL / MariaDB 서버를 다시 시작하는 것을 잊지 마십시오.

  • 클라이언트 쪽의 TCP / IP 연결에서 시간이 초과되었습니다.

    솔루션 : 변수를 늘리십시오wait_timeout .

  • 서버 연결이 닫힌 후 쿼리를 실행하려고했습니다.

    솔루션 : 응용 프로그램의 논리 오류를 수정해야합니다.

  • 호스트 이름 조회에 실패했거나 (예 : DNS 서버 문제) 서버가 --skip-networking옵션 으로 시작되었습니다 .

    방화벽이 MySQL 포트를 차단할 수도 있습니다 (예 : 기본적으로 3306).

  • 실행중인 스레드가 종료되었으므로 다시 시도하십시오.

  • 쿼리를 실행하는 동안 서버가 죽는 버그가 발생했습니다.

  • 다른 호스트에서 실행중인 클라이언트는 연결하는 데 필요한 권한이 없습니다.

  • 그리고 더 많은, 그래서 더 많은 배우 : B.5.2.9 MySQL 서버는 사라했다 .

자세한 내용은 MySQL 또는 시스템 로그 (예 :)를 확인하십시오 /var/log/messages.

MySQL 서버 또는 클라이언트를 디버깅하려면 26.5 MySQL 디버깅 및 포팅을 확인하십시오 .


drush또는 mysql명령을 사용하여 파일에서 데이터베이스를 가져 오려는 경우 다음을 수행 할 수 있습니다.

  • 나머지 쿼리를 진행하고 실행하려면 강제 옵션 ( -f)을 추가하십시오 mysql.

    데이터베이스에 캐시와 관련이 있지만 큰 관련이없는 큰 쿼리가있는 경우 유용합니다.

    을 사용하여 다음 drush을 시도하십시오.cat foo.sql | $(drush sqlconnect) -f

  • 더 작은 값으로 --max-allowed-packet옵션을 적용 해보십시오 mysql.

  • 증가 max_allowed_packetwait_timeout 서버 설정 (예에서 ~/.my.cnf).

  • --skip-extended-insert큰 쿼리를 분류하는 옵션을 사용하여 원래 데이터베이스를 다시 덤프하십시오 . 그런 다음 파일을 다시 가져 오십시오.


참조 : ERROR 2006 (HY000) : MySQL 서버는 서비스 종료


3

@Clive가 일반적으로 제공하는 답변이 그 경우이지만 특히 노드 추가 양식의 경우 추가 원인이있을 수 있습니다.

노드 추가 양식은 일반적으로 크기가 크므로 처리시 많은 메모리를 사용할 수 있습니다 (특히 자르기 모듈과 같이 저장 중에 이미지 처리가있는 경우). 서버에 메모리가 부족하면 mysqld 프로세스가 종료되어 동일한 "없어짐"메시지가 표시 될 수 있습니다.

단서는 서버 로그를 확인하는 것입니다. CentOS 시스템에서 / var / log / messages에 다음 항목이 표시 될 수 있습니다.

1 월 1 일 00:00:00 servername 커널 : 메모리 부족 : 프로세스 XXXX (mysqld) 종료 프로세스 XXX 또는 희생 하위
1 월 1 일 00:00:00 servername 커널 : 프로세스 XXXX 종료, UID XX (mysqld) total-vm : XXXkB , anon-rss : XXXkB, 파일 -rss : XXkB

여기서 해결책은 더 많은 RAM을 추가하거나 스왑을 추가 / 증가시키는 것입니다.

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