MySQL

:: DEVELOPER ZONE

Login / Register

  • MySQL.com
  • Developer Zone
  • Partners
  • Online Shop
  • Downloads
  • Documentation
  • Forums
  • Lists
  • Bugs
  • Events
  • User Groups
  • Guilds
  • Blogs
  • Support
  • Resources
  • Books
  • FAQ

Справочное руководство по MySQL 4.0. :: A Проблемы и распространенные ошибки :: A.2 Распространенные ошибки при использовании MySQL :: A.2.2 Ошибка MySQL server has gone away

  • Overview
  • MySQL Reference Manual
  • MaxDB Documentation
  • Connectors

Search the MySQL manual:


  • Справочное руководство по MySQL 4.0.

  • A.2 Распространенные ошибки при использовании MySQL
  • A.2.1 Ошибка Access denied
  • A.2.2 Ошибка MySQL server has gone away
  • A.2.3 Ошибка Can't connect to [local] MySQL server
  • A.2.4 Ошибка Host '...' is blocked
  • A.2.5 Ошибка Too many connections
  • A.2.6 Ошибка Some non-transactional changed tables couldn't be rolled back
  • A.2.7 Ошибка Out of memory
  • A.2.8 Ошибка Packet too large
  • A.2.9 Коммуникационные ошибки / Оборванные соединения
  • A.2.10 Ошибка The table is full
  • A.2.11 Ошибка Can't create/write to file
  • A.2.12 Ошибка в клиенте Commands out of sync
  • A.2.13 Ошибка Ignoring user
  • A.2.14 Ошибка Table 'xxx' doesn't exist
  • A.2.15 Ошибка Can't initialize character set xxx
  • A.2.16 Не найден файл (File not found)

Get the MySQL Language Reference and MySQL Administrator's Guide from MySQL Press!


Additional languages

  • German


Learn about new MySQL releases, technical articles, events and more.

Subscribe to the monthly MySQL Newsletter!


Previous / Next / Up / Table of Contents

A.2.2. Ошибка MySQL server has gone away

Все изложенное в данном разделе относится также и к родственной ошибке Lost connection to server during query.

Наиболее часто ошибка MySQL server has gone away возникает в результате тайм-аута соединения и его закрытия сервером. По умолчанию сервер закрывает соединение по прошествии 8 часов бездействия. Можно изменить лимит времени, установив при запуске mysqld переменную wait_timeout.

Другой распространенной причиной получения ошибки MySQL server has gone away является выдача команды "закрытия" на соединении MySQL с последующей попыткой выполнить запрос на закрытом соединении.

Если это получено в скрипте, то достаточно просто повторить запрос от клиента, чтобы соединение автоматически восстановилось.

Обычно в этом случае выдаются следующие коды ошибки (какой из них вы получите, зависит от ОС):

Код ошибки Описание
CR_SERVER_GONE_ERROR Клиент не может послать запрос серверу.
CR_SERVER_LOST Клиент не получил ошибки при передаче запроса серверу, но он не получил также полного ответа (или хоть какого-то ответа) на запрос.

Ошибка будет также выдана, если кто-нибудь уничтожит выполняющийся поток посредством kill номерпотока.

Проверить, что MySQL на ходу, можно, запустив mysqladmin version и изучив время работы (uptime). Если проблема в аварийном завершении mysqld, то необходимо сосредоточиться на поиске причины аварии. В этом случае следует сначала проверить, не будет ли уничтожен MySQL снова при повторном задании запроса (see Раздел A.4.1, «Что делать, если работа MySQL сопровождается постоянными сбоями»).

Эти ошибки будут также выдаваться при посылке серверу неверного или слишком длинного запроса. Если mysqld получает неправильный или слишком большой пакет, то сервер предполагает, что с клиентом что-то не так, и закрывает соединение. Если необходимо выполнять объемные запросы (например, при работе с большими столбцами типа BLOB), можно увеличить предельный размер запроса, запустив mysqld с опцией -O max_allowed_packet=# (по умолчанию 1 Mб). Дополнительная память выделяется по требованию, так что mysqld будет выделять больше памяти только в случае, когда выдан большой запрос или когда mysqld должен возвратить большую строку результата!

Вы также можете получить разрыв соединения, если вы отправили пакет больше 16Мб, если ваш клиент старше чем 4.0.8, а ваш сервер 4.0.8 или новее.

Если у вас возникнет желание сделать отчет об ошибке по этой проблеме, то не забудьте включить в него следующие сведения:

  • Информацию о том, упал MySQL или нет (это можно определить по файлу hostname.err (see Раздел A.4.1, «Что делать, если работа MySQL сопровождается постоянными сбоями»).

  • Если определенный запрос уничтожает mysqld, а используемые в нем таблицы перед выполнением запроса проверялись с помощью CHECK TABLE, то желательно составить контрольный тест (see Раздел E.1.6, «Создание контрольного примера при повреждении таблиц»).

  • Значение переменной wait_timeout в сервере (это значение выдает mysqladmin variables).

  • Информацию о том, пробовали ли вы запускать mysqld с --log и проверять, появляется ли выданный запрос в журнале.

Обращайтесь к разделу See Раздел 1.8.1.2, «Как задавать вопросы и направлять сообщения об ошибках».


This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

Top / Previous / Next / Up / Table of Contents

© 1995-2005 MySQL AB. All rights reserved.

  • About MySQL
  • Careers
  • Site Map
  • Contact Us
  • Legal
  • Privacy Policy
  • Trademark Info
  • No Software Patents!