데이터베이스 일반 오류 : 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_packet및wait_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.