J'ai un problème avec les champs BLOB dans ma base de données MySQL - lors du téléchargement de fichiers supérieurs à environ 1 Mo, j'obtiens une erreur Packets larger than max_allowed_packet are not allowed.
Voici ce que j'ai essayé:
Dans le navigateur de requêtes MySQL, j'ai exécuté un show variables like 'max_allowed_packet'
qui m'a donné 1048576.
Ensuite, 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 quand je redémarre le serveur MySQL, cela revient par magie au 1048576. Que fais-je de mal ici?
Question bonus, est-il possible de compresser un champ BLOB?
Réponses:
Modifiez le fichier
my.ini
ou~/.my.cnf
en incluant la ligne unique sous[mysqld]
ou la[client]
section dans votre fichier:puis redémarrez le service MySQL et vous avez terminé.
Consultez la documentation pour plus d'informations.
la source
[mysqld]
et non[mysql]
(très similaire). Ça m'a coûté quelques minutes de headcratching.La variable max_allowed_packet peut être définie globalement en exécutant une requête.
Cependant, si vous ne le modifiez pas dans le
my.ini
fichier (comme l'a suggéré dragon112), la valeur sera réinitialisée au redémarrage du serveur, même si vous la définissez globalement.Pour changer le paquet maximum autorisé pour tout le monde à 1 Go jusqu'au redémarrage du serveur:
la source
SHOW VARIABLES WHERE variable_name = 'max_allowed_packet'
montre toujours l'ancienne valeurUn de mes développeurs juniors a eu un problème de modification pour moi, alors j'ai pensé que je développerais cela plus en détail pour les utilisateurs de Linux:
1) borne ouverte
2) racine ssh @ YOURIP
3) Entrez le mot de passe root
4) nano /etc/mysql/my.cnf (si la commande n'est pas reconnue, faites-le d'abord ou essayez vi puis répétez: yum install nano)
5) ajoutez la ligne: max_allowed_packet = 256M (évidemment ajustez la taille pour tout ce dont vous avez besoin) sous la section [MYSQLD]. Il a fait une erreur en le plaçant au bas du dossier en premier afin que cela ne fonctionne pas.
6) Control + O (enregistrer) puis ENTER (confirmer) puis Control + X (quitter le fichier)
7) service mysqld restart
8) Vous pouvez vérifier le changement dans la section des variables sur phpmyadmin
la source
sudo: command not found
outhis incident will be reported
parce que l'une ou l' autresudo
n'a pas été installée et configurée. Serait-il préférable de joncher cette réponse avec des instructions sur la configurationsudo
pour la première fois?Je pense que certains voudraient également savoir comment trouver le fichier my.ini sur votre PC. Pour les utilisateurs de Windows, je pense que la meilleure façon est la suivante:
J'ai obtenu cette réponse de http://bugs.mysql.com/bug.php?id=68516
la source
En suivant toutes les instructions, voici ce que j'ai fait et travaillé:
Donc, comme nous pouvons le voir, le max_allowed_packet a été modifié en dehors de my.ini.
Permet de quitter la session et de vérifier à nouveau:
Conclusion, après SET GLOBAL max_allowed_packet = 1073741824, le serveur aura le nouveau max_allowed_packet jusqu'à ce qu'il soit redémarré, comme quelqu'un l'a dit précédemment.
la source
Si vous obtenez cette erreur lors d'une sauvegarde, vous
max_allowed_packet
pouvez la définir dans lemy.cnf
particulièrement pourmysqldump
.J'ai continué à obtenir cette erreur lors de l'exécution d'un
mysqldump
et je n'ai pas compris car j'avais cet ensemble dansmy.cnf
la[mysqld]
section. Une fois que j'ai compris que je pouvais le définir[mysqldump]
et que j'ai défini la valeur, mes sauvegardes se sont terminées sans problème.la source
Pour ceux qui utilisent le serveur mysql de Wamp
Icône de bac à eau -> MySql -> my.ini
Faites défiler jusqu'à la fin jusqu'à ce que vous trouviez
Ajoutez la ligne de packet_size entre
Vérifiez si cela a fonctionné avec cette requête
la source
Cette erreur est due au fait que vos données contiennent une valeur plus grande que celle définie.
max_allowed_packed=500M
Notez simplement le ou vous pouvez calculer ces 500 * 1024k et utilisez-les au lieu de 500M si vous le souhaitez.Maintenant, redémarrez simplement MySQL.
la source
/etc/my.cnf
par exemple , MySQL, ou/etc/my.cnf.d/server.cnf
pour MariaDBBeaucoup de répondants ont repéré le problème et ont déjà donné la solution.
Je veux juste suggérer une autre solution, qui change la valeur de la variable Glogal à partir de l'outil Mysql Workbench . C'est bien sûr SI vous utilisez Workbench exécuté localement sur le serveur (ou via une connexion SSH)
Vous vous connectez simplement à votre instance et accédez au menu:
Vous définissez la valeur souhaitée, puis vous devez redémarrer le service MySql .
la source
Pour toute personne exécutant MySQL sur le service Amazon RDS, cette modification est effectuée via des groupes de paramètres . Vous devez créer une nouvelle PG ou utiliser une PG existante (autre que la valeur par défaut, qui est en lecture seule).
Vous devez rechercher le
max_allowed_packet
paramètre, modifier sa valeur, puis appuyer sur Enregistrer.De retour dans votre instance MySQL, si vous avez créé une nouvelle PG, vous devez attacher la PG à votre instance (vous devrez peut-être un redémarrage). Si vous avez modifié une PG qui était déjà attachée à votre instance, les modifications seront appliquées sans redémarrage, à toutes vos instances auxquelles cette PG est attachée.
la source
Si vous souhaitez télécharger une image ou des données de grande taille dans la base de données. Changez simplement le type de données en
'BIG BLOB'
.la source
set global max_allowed_packet = 10000000000;
la source