Salut à tous,

Ca fait un bout de temps que je lis les tutos et les dossiers sur developpez mais c'est mon premier post ici.

J'utilise en ce moment l'api mysql pour developper quelques applications de gestion de bases de données en ce moment, et je dois dire qu'un probleme arrive assez regulierement, l'erreur "MySQL server has gone away".
En gros, j'ai un table avec 3000+ entrées dessus. Pour chacune de ces entrées je fais un traitement et une fois que ce traitement est fini je met à jour dans ma base la nouvelle valeur. Hors j'etablis une nouvelle connexion a chaque fois et je ne suis pas persuadé que ce soit la bonne methode.
Un petit exemple en code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
int     main()
{
  MYSQL         *mysql;
  unsigned int  i;
  int           nb;
  MYSQL_RES     *res;
  MYSQL_ROW     row;
 
  mysql = mysql_init(NULL);
  if (mysql_real_connect(mysql, "localhost", "", "", "", 0, NULL, 0))
  //connexion
  if (mysql_query(mysql, "SELECT champ FROM table") == 0)
    {
      res = mysql_use_result(mysql);
      if (res)
        {
          while ((row = mysql_fetch_row(res)))
            {
              for (i = 0; i < mysql_num_fields(res); i++)
                {
                  new = traiter_le_champ(row[i]);
                  update(row[i], new);
                }
            }
          mysql_free_result(res);
        }
      else
        printf("Erreur : %s\n", mysql_error(mysql));
    }
  mysql_close(mysql);
  return (1);
}
void            update(char *champ, int new)
{
   char         *req;
   MYSQL        *mysql;
 
   mysql = mysql_init(NULL);
   if (!(mysql_real_connect(mysql, "localhost", "", "", "", 0, NULL, 0)))
     printf("Impossible de se connecter a la base de donnees\n");
 
   req = (char *)malloc(sizeof(char) * (60 + my_strlen(url)));
   sprintf(req, "UPDATE portail SET nouvelle_valeur = '%d' WHERE champ = '%s'", new, chmp);
   if (mysql_query(mysql, req))
     printf("Erreur : %s\n", mysql_error(mysql));
   free(req);
   mysql_close(mysql);
}
Et regulierement, suivant le programme, mysql ne repond plus au bout d'un moment.
Auriez vous une idée de comment parer à ce probleme ?
Merci beaucoup et bonne journée