Tengo un problema con los campos BLOB en mi base de datos MySQL: al cargar archivos de más de 1 MB, aparece un error Packets larger than max_allowed_packet are not allowed.
Esto es lo que he intentado:
En MySQL Query Browser ejecuté un show variables like 'max_allowed_packet'
que me dio 1048576.
Luego ejecuto la consulta set global max_allowed_packet=33554432
seguida de show variables like 'max_allowed_packet'
- me da 33554432 como se esperaba.
Pero cuando reinicio el servidor MySQL, mágicamente vuelve a 1048576. ¿Qué estoy haciendo mal aquí?
Pregunta extra, ¿es posible comprimir un campo BLOB?
Respuestas:
Cambie en el archivo
my.ini
o~/.my.cnf
al incluir la línea única debajo de[mysqld]
o[client]
sección en su archivo:luego reinicie el servicio MySQL y listo.
Consulte la documentación para más información.
fuente
[mysqld]
y no[mysql]
(muy similar). Me costó unos minutos de rascar la cabeza.La variable max_allowed_packet se puede establecer globalmente ejecutando una consulta.
Sin embargo, si no lo cambia en el
my.ini
archivo (como sugiere dragon112), el valor se restablecerá cuando el servidor se reinicie, incluso si lo configura globalmente.Para cambiar el paquete máximo permitido para todos a 1 GB hasta que se reinicie el servidor:
fuente
SHOW VARIABLES WHERE variable_name = 'max_allowed_packet'
todavía muestra un valor antiguoUno de mis desarrolladores junior tenía problemas para modificar esto, así que pensé en expandir esto en mayor detalle para los usuarios de Linux:
1) terminal abierto
2) raíz ssh @ YOURIP
3) ingrese la contraseña de root
4) nano /etc/mysql/my.cnf (si no se reconoce el comando, haga esto primero o intente vi y luego repita: yum install nano)
5) agregue la línea: max_allowed_packet = 256M (obviamente ajuste el tamaño para lo que necesite) en la sección [MYSQLD]. Cometió un error al colocarlo primero al final del archivo para que no funcionara.
6) Control + O (guardar) luego ENTER (confirmar) luego Control + X (archivo de salida)
7) reinicio del servicio mysqld
8) Puede verificar el cambio en la sección de variables en phpmyadmin
fuente
sudo: command not found
othis incident will be reported
porquesudo
no se han instalado ni configurado. ¿Sería mejor ensuciar esta respuesta con instrucciones sobre cómo configurarsudo
por primera vez?Creo que algunos también querrían saber cómo encontrar el archivo my.ini en su PC. Para los usuarios de Windows, creo que la mejor manera es la siguiente:
Recibí esta respuesta de http://bugs.mysql.com/bug.php?id=68516
fuente
Siguiendo todas las instrucciones, esto es lo que hice y trabajé:
Entonces, como podemos ver, el max_allowed_packet se ha cambiado fuera de my.ini.
Salgamos de la sesión y verifiquemos nuevamente:
Conclusión, después de SET GLOBAL max_allowed_packet = 1073741824, el servidor tendrá el nuevo max_allowed_packet hasta que se reinicie, como alguien dijo anteriormente.
fuente
Si obtiene este error mientras realiza una copia de seguridad,
max_allowed_packet
puede configurarlo enmy.cnf
particular paramysqldump
.Seguí recibiendo este error mientras realizaba una
mysqldump
y no lo entendí porque lo tenía configurado enmy.cnf
la[mysqld]
sección. Una vez que descubrí que podía configurarlo[mysqldump]
y configuré el valor, mis copias de seguridad se completaron sin problemas.fuente
Para aquellos que ejecutan wamp mysql server
Icono de la bandeja de Wamp -> MySql -> my.ini
Desplácese hacia abajo hasta el final hasta que encuentre
Agregue la línea de paquete_tamaño entre
Comprueba si funcionó con esta consulta
fuente
Este error se debe a que sus datos contienen un valor mayor que el establecido.
Simplemente escriba
max_allowed_packed=500M
o puede calcular ese 500 * 1024k y usarlo en lugar de 500M si lo desea.Ahora solo reinicie MySQL.
fuente
/etc/my.cnf
por ejemplo MySQL, o/etc/my.cnf.d/server.cnf
para MariaDBMuchos de los que respondieron detectaron el problema y ya dieron la solución.
Solo quiero sugerir otra solución, que está cambiando el valor de la variable Glogal desde la herramienta Mysql Workbench . Eso es, por supuesto, si usa Workbench ejecutándose localmente en el servidor (o mediante conexión SSH)
Simplemente conéctese a su instancia y vaya al menú:
Establece el valor deseado y luego necesita reiniciar el Servicio MySql .
fuente
Para cualquiera que ejecute MySQL en el servicio Amazon RDS, este cambio se realiza a través de grupos de parámetros . Debe crear una nueva PG o usar una existente (que no sea la predeterminada, que es de solo lectura).
Debe buscar el
max_allowed_packet
parámetro, cambiar su valor y luego presionar guardar.De vuelta en su instancia de MySQL, si creó una nueva PG, debe adjuntar la PG a su instancia (es posible que necesite reiniciar). Si cambió una PG que ya estaba adjunta a su instancia, los cambios se aplicarán sin reiniciar, a todas sus instancias que tengan esa PG adjunta.
fuente
Si desea cargar imágenes o datos de gran tamaño en la base de datos. Simplemente cambie el tipo de datos a
'BIG BLOB'
.fuente
establecer global max_allowed_packet = 10000000000;
fuente