Saltar al contenido

cómo verificar y configurar la variable max_allowed_packet mysql

Te sugerimos que pruebes esta solución en un ambiente controlado antes de pasarlo a producción, saludos.

Solución:

max_allowed_packet

está configurado en la configuración de mysql, no en el lado de php

[mysqld]
max_allowed_packet=16M 

Puedes ver su valor actual en mysql así:

SHOW VARIABLES LIKE 'max_allowed_packet';

Puede intentar cambiarlo de esta manera, pero es poco probable que esto funcione en el alojamiento compartido:

SET GLOBAL max_allowed_packet=16777216;

Puede leer sobre esto aquí http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

EDITAR

Él [mysqld] es necesario hacer la max_allowed_packet trabajando desde al menos mysql versión 5.5.

Configuré recientemente una instancia en AWS EC2 con Drupal y Solr Search Engine, que requirió 32M max_allowed_packet. Si establece el valor bajo [mysqld_safe] (que es la configuración predeterminada que viene con la instalación de mysql) en /etc/my.cnf, no funcionó. No profundicé en el problema. Pero después de cambiarlo a [mysqld] y reinicié el mysqld, funcionó.

El siguiente PHP funcionó para mí (usando la extensión mysqli pero las consultas deberían ser las mismas para otras extensiones):

$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 );

Entonces, si tiene una consulta que espera que sea bastante larga, puede asegurarse de que mysql la acepte con algo como:

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

Tenga en cuenta que agregué 1024 bytes adicionales a la longitud del string porque según el manual

El valor debe ser un múltiplo de 1024; los no múltiplos se redondean hacia abajo al múltiplo más cercano.

Con suerte, eso debería establecer el tamaño max_allowed_packet lo suficientemente grande como para manejar su consulta. No he probado esto en un host compartido, por lo que se aplica la misma advertencia que @Glebushka.

vaya a cpanel e inicie sesión como administrador principal o superadministrador

  1. encuentre SSH/Shell Access (lo encontrará en la pestaña de seguridad de cpanel)

  2. ahora proporcione el nombre de usuario y la contraseña del superadministrador como root o whatyougave

    note: do not give any username, cos, it needs permissions
    
  3. una vez que esté en el tipo de consola

    tipo ‘ mysql ‘ y presiona enter ahora te encuentras en

    mysql> /* y escriba aquí como */

    mysql> set global net_buffer_length=1000000;

    Consulta OK, 0 filas afectadas (0.00 seg)

    mysql> set global max_allowed_packet=1000000000;

    Consulta OK, 0 filas afectadas (0.00 seg)

Ahora sube y disfruta!!!

Agradecemos que desees confirmar nuestro cometido poniendo un comentario y puntuándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *