IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

SET SESSION max_allowed_packet n'a pas d'effet


Sujet :

Administration MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Points : 16
    Points
    16
    Par défaut SET SESSION max_allowed_packet n'a pas d'effet
    Salut,

    Je travaille actuellement sur un client java utilisant jdbc pour insérer un volume important de données dans une table Mysql.

    Mon choix est d'insérer plusieurs lignes en meme temps en utilisant cette syntaxe : "INSERT INTO table (a,b) VALUES (1,2),(3,4),(5,6)..."

    J'envoie donc à mysql des requetes insert volumineuses dont la taille dépasse parfois la limite par défaut de mysql nommée max_allowed_packet (= 1M).

    J'ai donc tenté de modifier cette valeur uniquement pour la session en cours, juste avant d'envoyer ma grosse requete, mais il semble que cela n'a pas d'effet et que j'obtiens toujours le message d'erreur de mysql.

    Voila mon code java :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // increase max_allowed_packet to 8M 
    Statement stmtSet = connection.createStatement(); 
    stmtSet.execute("SET SESSION max_allowed_packet = 8 * 1024 * 1024;");	
     
    // check if value was changed	
    Statement stmtShow = connection.createStatement(); 
    ResultSet rs = stmtShow.executeQuery("SHOW SESSION VARIABLES like 'max_allowed_packet'"); 
    rs.next();	
    System.out.println(rs.getString(1)+"="+rs.getString(2));	
     
    // try to execute the big insert	
    Statement stmtInsert = connection.createStatement(); 
    stmtInsert.executeUpdate(bigInsert));

    Et ce qu'il affiche :
    max_allowed_packet=8388608
    com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4796533 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2655)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1604)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)


    Comme vous pouvez voir max_allowed_packet a bien été changé en 8M mais j'ai toujours l'erreur PacketTooBigException, bien que mon INSERT ne fasse que 4M.

    Et pourtant tous les Statement ci-dessus sont bien exécutés dans la meme session mysql (ou plutot la meme java.sql.Connection).

    Si quelqu'un a une idée de ce qui cloche, ce serait grandement apprécié !

    Merci bcp !

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    ok problème résolu c'était bien un bug de mysql :
    http://bugs.mysql.com/bug.php?id=22891

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juin 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    salut je suis actuellement confronté au même problème de connexion de JAVA à une base de données implantée sur le SGBD MySQL. voici ce que la console JAVA m'affiche quand je lance la compilation:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3224116 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
    à cet effet, dans le fichier de configuration de MySQL, j'ai changé la valeur de 'max_allowed_packet', je l'ai mise à 100M. Pour vérifier que la valeur a été reconfiguré, j'ai saisis dans la console mysql la commande show variables like 'max_allowed_packet' et le résultat montre la valeur de cette variable est bien passé à 100M. cependant, la reconfiguration est ignoré dans java et le même message d'erreur apparait. d'après TiEuM, c'est un bug du server mysql. quelqu'un pourrait-il m'aider s'il vous plait?! c'est très urgent. voici mon code de connexion et l'erreur générée dans la console java:MySQLCli.java
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/07/2010, 18h31
  2. Réponses: 12
    Dernier message: 14/02/2006, 19h03
  3. Réponses: 6
    Dernier message: 31/01/2006, 16h55
  4. [Sécurité] Session qui ne fonctionne pas!!!!
    Par philippef dans le forum Langage
    Réponses: 5
    Dernier message: 27/10/2005, 17h35
  5. Session() ou Set session()
    Par CDRIK dans le forum ASP
    Réponses: 5
    Dernier message: 04/10/2004, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo