recommendation modificar max_allowed_packet cambiar allowed php mysql

php - modificar - cómo verificar y establecer max_allowed_packet mysql variable



set max_allowed_packet mysql workbench (3)

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 tienes una consulta que esperas que sea bastante larga, puedes asegurarte 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 de la cadena porque de dev.mysql.com/doc/refman/5.0/en/… ,

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

Es de esperar que establezca el tamaño de 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.

Posible duplicado:
MySQL Error 1153 - Obtuve un paquete más grande que ''max_allowed_packet'' bytes

Hola, estoy recibiendo el error:

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

pero no realicé ningún cambio en mi código fuente y el hosting declara que no hicieron ningún cambio en la configuración del servidor.

No sé lo que pasó Pero estoy tratando de encontrar la razón.

max_allowed_packet , ¿cómo verificar la variable max_allowed_packet mysql mediante script php?

y es posible establecerlo en el código fuente?


Ir a cpanel e iniciar sesión como administrador principal o super administrador

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

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

    note: do not give any username, cos, it needs permissions

  3. una vez que esté en el tipo de consola

    escribe '' mysql '' y presiona enter ahora te encuentras en

    mysql> / * y escribe 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!


max_allowed_packet está configurado en mysql config, no en php side

[mysqld] max_allowed_packet=16M

Puedes ver que es el 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

El [mysqld] es necesario para que max_allowed_packet funcione, al menos desde mysql versión 5.5.

Recientemente configuró una instancia en AWS EC2 con Drupal y Solr Search Engine, que requirió 32M max_allowed_packet . Si estableces el valor en el modo [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 reiniciar el mysqld, funcionó.