com.mysql.jdbc.PacketTooBigException
Je suis de stockage d'images dans MYSQL.
J'ai de la table comme
CREATE TABLE myTable (id INT, myImage BLOB);
Lorsque j'essaie d'insérer 4.7MB
fichier, j'obtiens une exception, comme le
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4996552 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
Je crois que c'est lié à la taille de l'image seulement. Est-il un autre type de variable que je peux utiliser?
Mise à jour de 1
Que par les plus âgés DONC, la question, j'ai aussi essayé avec MEDIUMBLOB
mais j'obtiens la même erreur.
Ajout d'Image dans une base de données en Java
Mise à jour 2
Au début du projet, j'ai exécuter la requête ci-dessous et tout fonctionne maintenant
SET GLOBAL max_allowed_packet = 1024*1024*14;
source d'informationauteur Fahim Parkar
Vous devez vous connecter pour publier un commentaire.
Que l'erreur dit, il n'a rien à voir avec le type de variable, mais plutôt la
max_allowed_packet
variable:Mais, généralement parlant, ne pas stocker des fichiers dans votre base de données, de les stocker dans votre système de fichiers et d'enregistrer le chemin d'accès au fichier dans la base de données.
Pour les utilisateurs de Windows:
mysql_home points à votre mysql/mariadb dossier d'installation.
ouvrir cmd, cd %mysql_home%\bin et exécutez
mysqladmin > temp.txt
Cela générera beaucoup d'informations sur l'utilisation de l'outil. Quelque part entre tout ce que la sortie que vous trouverez cette information:Options par défaut sont lues dans les fichiers suivants dans l'ordre indiqué:
C:\windows\my.ini C:\windows\my.cnf C:\my.ini C:\my.cnf c:\mariadb-5.5.29-w
inx64\mon.ini c:\mariadb-5.5.29-winx64\my.cnf
Cela montre que vous pourrait avez, si vous ne l'avez pas déjà, un fichier appelé
my.ini
ou mon.conf dans le %mysql_home% annuaire.créer mon.ini et ajoutez les lignes:
assurez-vous d'inclure les paramètres groupe qui est
[mysqld]
sinon il ne pourra pas démarrer (et pour moi, il a fini par pendaison dans les limbes).Vous devez maintenant redémarrer le démon MySQL, ce qui est fait soit en tuant et de départ en cours d'exécution mysqld ou de redémarrer le service MySQL (exécuter les services.msc, recherchez MySQL, appuyez sur le bouton de redémarrage; ou de cmd,
net stop MySQL
suivie parnet start MySQL
).La suite travaillé pour moi
modifier mon.cnf de fichier ( le mien était dans /etc/mysql )
Puis modifier la valeur max_allowed_packet
Je l'ai mis à
max_allowed_packet=200M
Assurez-vous de redémarrer MySQL, pour que le changement prenne effet