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.8 Ошибка Packet too large

  • 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.8. Ошибка Packet too large

Когда клиент MySQL или сервер mysqld получают пакет с размерами, превышающими max_allowed_packet байтов, программа выдает ошибку Packet too large и закрывает соединение.

В MySQL 3.23 размер самого большого возможного пакета составляет 16 Mб (из-за ограничений клиент-серверного протокола). В MySQL 4.0.1 и выше размер пакета ограничивается только количеством имеющейся на сервере памяти (вплоть до теоретического максимума в 2 Гб).

Коммуникационный пакет - это одна команда SQL, посылаемая серверу, или одна строка, посылаемая клиенту.

Когда клиент MySQL или сервер mysqld получают пакет, размеры которого превышают max_allowed_packet байтов, программа выдает ошибку Packet too large и закрывает соединение. Если коммуникационный пакет слишком велик, то в некоторых клиентах может быть выдана ошибка Lost connection to MySQL server during query.

Отметим, что и клиент, и сервер имеют свои собственные переменные max_allowed_packet. Если требуется обрабатывать большие пакеты, то эту переменную необходимо увеличить как для клиента, так и для сервера.

Увеличение переменной не опасно, поскольку память выделяется только при необходимости; эта переменная скорее является мерой предосторожности для "отлавливания" неправильных пакетов между клиентом и сервером, а также для того, чтобы предупредить ситуацию нехватки памяти, вследствие случайного использования больших пакетов.

Если используется клиент mysql, то можно задать больший буфер, запустив клиент посредством mysql --set-variable=max_allowed_packet=8M. Для других клиентов существуют собственные методы установки этой переменной. Обратите внимание, что начиная с 4.0 использование --set-variable не рекомендуется, используйте просто --max-allowed-packet=8M.

Для установки max_allowed_packet большего размера в mysqld можно также использовать файл опций. Например, если в таблице предполагается хранить значение типа MEDIUMBLOB максимальной длины, то нужно запускать сервер с опцией set-variable=max_allowed_packet=16M.

При использовании больших пакетов могут также возникать непредсказуемые проблемы, если вы работаете с большими значениями типа BLOB, и mysqld не был предоставлен доступ к достаточному объему памяти для обработки запроса. Если есть подозрение, что дело в этом, попробуйте добавить ulimit -d 256000 в начале скрипта safe_mysqld и перезапустить mysqld.


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!