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
encuentre acceso SSH / Shell (encontrará en la pestaña de seguridad de cpanel)
ahora proporcione el nombre de usuario y la contraseña de Super Administrator como
root
owhatyougave
note: do not give any username, cos, it needs permissions
una vez que esté en el tipo de consola
escribe ''
mysql
'' y presiona enter ahora te encuentras enmysql>
/ * 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ó.