Intereting Posts
Шаблон DataMapper PHP: моему классу нужен экземпляр PDO, я хочу обернуть его внутри класса Db Не удалось обновить запасное количество товара для продукта в Magento 1.6.2 Отключить выполнение Javascript на определенных страницах (HTML / PHP) PHP-MYSQL: преобразование временной отметки Unix в DateTime и наоборот Загрузить pdf-файл с php Как добавить два значения массива в php? Получение контента с использованием API википедии Как разделить разделенный запятыми отдельный столбец на несколько столбцов в php mysql Странное поведение с плавающей запятой PHP Включение файла javascript вне корня doc с использованием zend framework Как добавить новый вид (а также новый тип элемента меню) к существующим компонентам Joomla 2.5? Объединение двух регулярных выражений для усечения слов в строках Приложение не может получить файл PHP или ошибку в PHP-файле Android Studio метод создания шаблонов PHP (т. е. html с переменными)? PHP curl положил 500 ошибок

как проверить и установить max_allowed_packet mysql variable

Возможный дубликат:
Ошибка MySQL 1153 – получен пакет, превышающий байты max_allowed_packet

Привет, я получаю сообщение об ошибке:

[1153] Got a packet bigger than 'max_allowed_packet'bytes

но я не внес изменений в свой исходный код, и хостинг утверждает, что они не вносили никаких изменений в настройки сервера.

Я не знаю, что произошло. Но я пытаюсь найти причину.

так, как проверить max_allowed_packet переменную mysql по php-скрипту?

и возможно ли установить его в исходном коде?

max_allowed_packet устанавливается в конфигурацию mysql, а не на стороне php

 [mysqld] max_allowed_packet=16M 

Вы можете увидеть его текущее значение в mysql следующим образом:

 SHOW VARIABLES LIKE 'max_allowed_packet'; 

Вы можете попытаться изменить его таким образом, но вряд ли это будет работать на общем хостинге:

 SET GLOBAL max_allowed_packet=16777216; 

Вы можете прочитать об этом здесь http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

РЕДАКТИРОВАТЬ

[Mysqld] необходимо сделать max_allowed_packet работающим, по крайней мере, с mysql версии 5.5.

Недавно настройте экземпляр на AWS EC2 с помощью Drupal и Solr Search Engine, для которого требуется 32M max_allowed_packet . Он установил значение в [mysqld_safe] (которое по умолчанию было установлено в режиме установки mysql) в /etc/my.cnf, оно не работало. Я не вникал в проблему. Но после того, как я изменил его на [mysqld] и перезапустил mysqld, он сработал.

Следующий PHP работал для меня (с использованием расширения mysqli, но запросы должны быть одинаковыми для других расширений):

 $db = new mysqli( 'localhost', 'user', 'pass', 'dbname' ); // to get the max_allowed_packet $maxp = $db->query( 'SELECT @@global.max_allowed_packet' )->fetch_array(); echo $maxp[ 0 ]; // to set the max_allowed_packet to 500MB $db->query( 'SET @@global.max_allowed_packet = ' . 500 * 1024 * 1024 ); 

Поэтому, если у вас есть запрос, который вы ожидаете довольно долго, вы можете убедиться, что mysql примет его с чем-то вроде:

 $sql = "some really long sql query..."; $db->query( 'SET @@global.max_allowed_packet = ' . strlen( $sql ) + 1024 ); $db->query( $sql ); 

Обратите внимание, что я добавил дополнительные 1024 байта к длине строки, потому что согласно руководству ,

Значение должно быть кратно 1024; nonmultiples округляются до ближайшего кратного.

Надеемся, что размер max_allowed_packet будет достаточно большим, чтобы обрабатывать ваш запрос. Я не пробовал это на общем хосте, поэтому применяется одно и то же предостережение, как @ Глебушка.

goto cpanel и login в качестве главного администратора или супер администратора

  1. найти SSH / Shell Access (вы найдете под вкладкой security cpanel)

  2. теперь whatyougave имя пользователя и пароль Супер администратора как root или whatyougave

     note: do not give any username, cos, it needs permissions 
  3. как только ваш тип консоли

    введите ' mysql ' и нажмите enter, чтобы найти себя в

    mysql> / * и введите здесь как * /

    mysql> set global net_buffer_length=1000000;

    Запрос ОК, 0 строк, затронутых (0.00 сек)

    mysql> set global max_allowed_packet=1000000000;

    Запрос ОК, 0 строк, затронутых (0.00 сек)

Теперь загрузите и наслаждайтесь !!!