Раздел вопрос-ответ Got a packet bigger than 'max_allowed_packet' bytes - ошибка mysql

Посыпались ошибки в mysql, постоянно на определённом наборе данных:

Got a packet bigger than 'max_allowed_packet' bytes

Причём на запросе Delete, а не insert/update..

Как исправить? Что это за max_allowed_packet? База данных amazon rds.

 

share

1 ответ

Вероятнее всего приходит очень длинный mysql-запрос. Проверим установленное значение параметра max_allowed_packet с помощью команды:

Show variables like '%max_allowed%'

>  Show variables like '%max_allowed%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 4194304    |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.07 sec)

slave_max_allowed_packet - это максимально допустимый размер пакета для слэйва. На самом сервере слэйва этот размер пакета задаётся точно также как и для master опцией max_allowed_packet.

Как задать slave_max_allowed_packet для amazon rds базы?

Чтобы изменить параметр mysql в rds надо зайти в изменение инстанса (instance actions -> modify) и выбрать db parameter group в которой заданы необходимые параметры, после чего перезагрузить инстанс.

Если сервак со стандартным mysql-сервером, то в файле my.cnf (вероятнее всего по пути /etc/mysql/my.cnf либо /etc/my.cnf) нужно настроить параметр max_allowed_packet нужным значением:

max_allowed_packet = 32M

И сделать restart mysql: service mysql restart

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться
    НОВЫЕ ПОЛЬЗОВАТЕЛИ