J'ai un problème avec les champs BLOB dans ma base de données MySQL. Lorsque je télécharge des fichiers d'une taille supérieure à environ 1 Mo, j'obtiens l'erreur suivante : " Les paquets plus grands que le paquet max_allowed_packet ne sont pas autorisés ".
Voici ce que j'ai essayé :
Dans le MySQL Query Browser, j'ai lancé une requête show variables like 'max_allowed_packet'
qui m'a donné 1048576.
Puis j'exécute la requête set global max_allowed_packet=33554432
suivie de show variables like 'max_allowed_packet'
- cela me donne 33554432 comme prévu.
Mais lorsque je redémarre le serveur MySQL, il revient comme par magie à 1048576. Qu'est-ce que je fais de mal ici ?
Question bonus, est-il possible de compresser un champ BLOB ?
Modifiez le fichier my.ini
ou ~/.my.cnf
en incluant la ligne unique sous la section [mysqld]
ou [client]
dans votre fichier :
max_allowed_packet=500M
puis redémarrez le service MySQL et vous avez terminé.
Consultez la [documentation][1] pour plus d'informations.
[1] : https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html
La variable [max_allowed_packet][1] peut être définie globalement en exécutant une requête.
Cependant, si vous ne la modifiez pas dans le fichier my.ini
(comme le suggère Dragon112), la valeur sera réinitialisée au redémarrage du serveur, même si vous l'avez définie globalement.
Pour changer le paquet maximum autorisé pour tout le monde à 1GB jusqu'au redémarrage du serveur :
SET GLOBAL max_allowed_packet=1073741824;
[1] : http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_max_allowed_packet
Cette erreur est due au fait que vos données contiennent une valeur plus grande que la valeur définie.
Il suffit d'écrire le max_allowed_packed=500M
ou vous pouvez calculer 500*1024k et l'utiliser à la place de 500M si vous le souhaitez.
Maintenant, redémarrez MySQL.