Общая ошибка базы данных: сервер MySQL MySQL ушел

Недавно я начал получать ошибку каждый раз, когда я пытаюсь добавить контент независимо от типа. Это ошибка, которая появляется в браузере:

  

Дополнительное исключенное исключение при обработке исключений.

     

Оригинал   PDOException: SQLSTATE [HY000]: общая ошибка: 2006 сервер MySQL ушел: SELECT COUNT (cid) FROM {comment} WHERE status =: status; Массив ([: status] => 0) в comment_count_unpublished () (строка 313 из /Applications/MAMP/htdocs/modules/comment/comment.module).

     

Дополнительно

     

PDOException: SQLSTATE [HY000]: общая ошибка: 2006 сервер MySQL ушел: INSERT INTO {watchdog} (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (: db_insert_placeholder_0 ,: db_insert_placeholder_1,: db_insert_placeholder_2,: db_insert_placeholder_3,: 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 в% function (строка% строка% файла). [: Db_insert_placeholder_3] => a : 6: {s: 5: "% type"; s: 12: "PDOException"; s: 8: "! Message"; s: 154: "SQLSTATE [HY000]: общая ошибка: сервер MySQL MySQL ушел: SELECT COUNT (cid) FROM {comment} WHERE status =: status; Array ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s : 5: "% файл", s: 56: "/Applications /MAMP /HTDOCS /модули /комментировать /comment.module"; s: 5: "% строки"; 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 ; [: db_insert_placeholder_7] => http: //localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_i nsert_placeholder_9] => 1338336955) в dblog_watchdog () (строка 154 из /Applications/MAMP/htdocs/modules/dblog/dblog.module).

Я также получаю следующую ошибку в файле php error:

  

PHP Неустранимая ошибка: исключить исключение «PDOException» с сообщением «SQLSTATE [HY000]: общая ошибка: 2006 сервер MySQL ушел» в /Applications/MAMP/htdocs/includes/database/database.inc:2136

     

Трассировка стека:
  0 /Applications/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> execute (массив)
  1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase-> execute (массив, массив)
  2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): запрос DatabaseConnection-> ('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-> set (Array)
  7 [внутренняя функция]: DrupalCacheArray-> __ destruct ()
  8 {главная}         в /21 /

У меня возникают небольшие проблемы с расшифровкой этих сообщений об ошибках. Может ли кто-нибудь помочь мне понять, что здесь происходит?

22 голоса | спросил Mike2012 30 Mayam12 2012, 04:34:39

3 ответа


28

9 раз из 10 эта ошибка вызвана недостаточно большим значением max_allowed_packet в файле my.cnf вашего сервера MySQL.

Стандартное значение по умолчанию для MAMP в моем опыте - 1M, чего обычно недостаточно для Drupal (особенно учитывая размер некоторых строк кэша, которые он генерирует).

Попробуйте постепенно увеличивать эту настройку, чтобы увидеть, исчезла ли ошибка. Я уверен, что быстрый поиск в Google расскажет вам, как это сделать в MAMP.

ответил Clive 30 Mayam12 2012, 05:01:12
3

Эта ошибка 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, чтобы разбить большие запросы. Затем снова импортируйте файл.

ответил kenorb 7 J0000006Europe/Moscow 2016, 17:57:39
2

Ответ, который @Clive дает, как правило, имеет место, но может быть и дополнительная причина, особенно с помощью форм добавления узлов.

Формы добавления узлов обычно большие, и их обработка может использовать большую память (особенно если во время сохранения есть какая-либо обработка изображений, например, с помощью модулей обрезки). Если на сервере не хватает памяти, процесс mysqld может быть убит, что приводит к тому же сообщению «ушел».

Ключ должен выглядеть в журналах сервера. На машине CentOS вы можете увидеть следующую запись в /var /log /messages

  

Январь 1 00:00:00 servername Ядро: Недостаточно памяти: Процесс удаления XXXX   (mysqld) оценка XXX или жертва ребенка
  1 января 00:00:00 имя сервера   Ядро: Убитый процесс XXXX, UID XX, (mysqld) total-vm: XXXkB,   anon-rss: XXXkB, file-rss: XXkB

Решение здесь - либо добавить больше ОЗУ, либо добавить /увеличить swap.

ответил mpdonadio 7 Maypm15 2015, 17:40:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132