Как отследить ошибку Drupal max_allowed_packet? - PullRequest
4 голосов
/ 23 февраля 2011

Один из моих промежуточных сайтов недавно начал извергать огромные ошибки на каждой странице администратора по следующим направлениям:

User warning: Got a packet bigger than 'max_allowed_packet' bytes query: UPDATE cache_update SET data = ' ... ', created = 1298434692, expire = 1298438292, serialized = 1 WHERE cid = 'update_project_data' in _db_query() (line 141 of /var/www/vhosts/mysite/mypath/includes/database.mysqli.inc). (где "... "составляет около 1,5 миллионов символов сериализованных данных)

Как мне отследить, где возникла ошибка?Будет ли полезным добавление кода отладки в _db_query, так как его так часто вызывают?

Ответы [ 2 ]

5 голосов
/ 23 февраля 2011

Нет необходимости отслеживать это, потому что вы не можете это исправить, я думаю.

Это кеш из update.module, содержащий информацию о том, какие модули имеют обновленные версии и так далее. Так что это происходит от одного из вызовов _update_cache_set () в этом модуле.

Исходя из дикой догадки, я бы сказал, что именно эта функция: http://api.drupal.org/api/drupal/modules--update--update.fetch.inc/function/_update_refresh/6

Это в основном сборка огромного массива с информацией обо всех проектах на вашем сайте и попытка сохранить его как единое сериализованное значение.

Сколько модулей у вас установлено на этом сайте?

Я могу придумать три способа «исправить» эту ошибку:

  • Увеличить размер max_allowed_packet. (настройка max_allowed_packet в my.conf)
  • Отключить update.module (в любом случае это не так полезно на промежуточном / производственном сайте, когда вам все равно нужно сначала обновить сайт разработчика)
  • Отключить некоторые модули;)
1 голос
/ 20 ноября 2012

У меня была похожая ошибка, и я ходил по кругу около часа.

Увеличен лимит памяти до 512m, но проблема все еще возникла.И решил, что этого достаточно.Так что пошли искать в другом месте.

Я очистил кеш с помощью drush, но ошибка все равно остался, а затем посмотрел таблицы базы данных.

Я заметил, что очищены все таблицы кеша, кроме cache_update.Я усек эту таблицу и бац, все работало нормально.

Прежде, чем я получил ошибку ограничения памяти, я получил ошибку max_input_vars, так как я на PHP5.4.Но этот вопрос и ответ привели меня к этому исправлению.Не совсем уверен, как или почему это сработало, но это сработало.

...