Вы здесь

Ошибка "MySQL server has gone away" при отправке картинок в entityforms

-1

Добрый день. На сайте есть форма, в форме 3 поля под картинки. При отправке формы мы генерируем PDF с данными этой формы и отсылаем его на почту админу.
Если загружаем картинки больше 1 МБ, то есть получается 3 МБ на три картинки, то падает база вот с такими сообщениями:

1-ое сообщение

PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away: SELECT base.id AS id, base.entity_type AS entity_type, base.bundle AS bundle, base.op AS op, base.rules_config AS rules_config, base.weight AS weight, base.args AS args, base.false_msg AS false_msg, base.status AS status, base.module AS module FROM {entity_rule_setting} base WHERE (base.entity_type = :db_condition_placeholder_0) AND (base.bundle = :db_condition_placeholder_1) AND (base.op = :db_condition_placeholder_2) ; Array ( [:db_condition_placeholder_0] => entityform [:db_condition_placeholder_1] => agent_apply [:db_condition_placeholder_2] => create ) in EntityAPIController->query() (line 187 of /home/admin/web/site.com/public_html/sites/all/modules/entity/includes/entity.controller.inc).

Функция со 187 строкой указанного файла:

  public function query($ids, $conditions, $revision_id = FALSE) {
    // Build the query.
    $query = $this->buildQuery($ids, $conditions, $revision_id);
    $result = $query->execute(); //187 строка
    if (!empty($this->entityInfo['entity class'])) {
      $result->setFetchMode(PDO::FETCH_CLASS, $this->entityInfo['entity class'], array(array(), $this->entityType));
    }
    return $result;
  }

2-ое сообщение:

PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away: DELETE FROM {semaphore} WHERE (value = :db_condition_placeholder_0) ; Array ( [:db_condition_placeholder_0] => 195967454358742de58c4d73.98903635 ) in lock_release_all() (line 269 of /home/admin/web/site.com/public_html/includes/lock.inc).

Функция со 269 строкой указанного файла:

function lock_release_all($lock_id = NULL) {
  global $locks;

  $locks = array();
  if (empty($lock_id)) {
    $lock_id = _lock_id();
  }
  db_delete('semaphore')
    ->condition('value', $lock_id)
    ->execute(); //269 строка
}

Какие дадите советы? В чём проблема может быть?

Версия Drupal: 
7.x
Связанные проекты: 
Entityform
Вопрос задан 10.01.2017 - 04:09

Сервер сами поднимали или хостинг?
Надо увеличить значение у параметра max_allowed_packet в файле my.cnf

Комментарий оставлен 10.01.2017 - 09:02

Сервер сами поднимали.
При ошибках описанных выше значение стояло max_allowed_packet = 64М
Только что тестировали, поставили значение 256М. Отправляли те же самые 3 картинки на 3 МБ -в итоге список верхних ошибок пополнился:

PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away: SELECT 1 AS expression FROM {sessions} sessions WHERE ( (sid = :db_condition_placeholder_0) AND (ssid = :db_condition_placeholder_1) ); Array ( [:db_condition_placeholder_0] => dYKg_9bC7DUckVM1w9LnJrRIBzOkiW1ZTEhpZ_Dfdf8 [:db_condition_placeholder_1] => ) in _drupal_session_write() (line 209 of /home/admin/web/site.com/public_html/includes/session.inc).

Вот что содержит 209 строка в фале session.inc

db_merge('sessions')
->key($key)
->fields($fields)
->execute(); //209 строка
}

Комментарий оставлен 10.01.2017 - 12:11

Ответы

0

Решили проблему:
wait_timeout=10
сервер просто не дожидался завершения запроса. А теперь дожидается.
wait_timeout=600

Ответ дан 10.01.2017 - 12:47