deconnexion inexpliquée

deconnexion inexpliquée - C - Programmation

Marsh Posté le 02-09-2008 à 10:00:07    

Bonjour, lorsque j'effectue ces deux requetes, le log me dit que la première est ok mais la 2° à échoué (requete echou 2).J'appelle la même requete pour vous montrer l'absurdité.
 

Code :
  1. static MYSQL *conn;//global
  2. int connexion_mysql(){
  3. char *opt_host_name="localhost";
  4. char *opt_user_name="*******";
  5. char *opt_password="********";
  6. char *opt_db_name="********";
  7. conn = mysql_init (NULL);
  8. mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,opt_db_name,0,NULL,0);
  9. return (mysql_query (conn,"select * from THistorique" ) == 0);
  10. }
  11. int requete1()
  12. {
  13.    MYSQL_RES *res;
  14.    MYSQL_ROW row;
  15.    if (!mysql_query(conn,"SELECT * FROM THistorique" ))
  16.    {
  17.       trace_message("Requete echoue 1" );
  18.       return 0;
  19.    }
  20.    res = mysql_use_result(conn);
  21.    if (res != NULL)
  22.    {
  23.       if (row = mysql_fetch_row(res))
  24.       {
  25.         trace_message("Requete ok" );
  26.       }
  27.       mysql_free_result(res);
  28.       return 1;
  29.    }
  30.    else
  31.   {
  32.      trace_message("Requete echoue 2" );
  33.      return 0;
  34.   }
  35. }
  36. int insererFlux()
  37. {
  38.   connexion_mysql();
  39.   requete1();
  40.   requete1();
  41. ...


Où est l'explication ?

Reply

Marsh Posté le 02-09-2008 à 10:00:07   

Reply

Marsh Posté le 02-09-2008 à 10:41:50    

si je mets :

Code :
  1. int insererFlux()
  2. {
  3.   connexion_mysql();
  4.   requete1();
  5.   connexion_mysql();
  6.   requete1();
  7. ...


Ca marche


Message édité par majong le 02-09-2008 à 10:42:09
Reply

Marsh Posté le 02-09-2008 à 11:01:12    

Ben peut etre cela provient du fork
J'ai mis dans le main (donc meme connexion pour les fils)
 

Code :
  1. connexion_mysql();


 
 
puis  

Code :
  1. int insererFlux()
  2. {
  3.   requete1();
  4.   requete1();
  5. ...


La 2° requete n'est pas executée!


Message édité par majong le 02-09-2008 à 11:01:34
Reply

Marsh Posté le 02-09-2008 à 11:50:06    

A tout hasard, si tu ne fait pas le mysql_free_result(res); qu'est ce que ca donne?
Parce que vu que c'est a la deuxieme évaluation de res, apres un passage par cette fonction, que ton probleme survient, ça pourrait être lié, des fois que ça aie un effet de bord sur un champ de conn.
A+,


Message édité par gilou le 02-09-2008 à 11:52:36

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-09-2008 à 12:14:33    

non.
Ce n'est pas lié à la la compilation j'espère je fais:
gcc -c main.c md5.c -I/usr/include/mysql
puis
gcc -o serveur main.o md5.o -L/usr/lib/mysql -lmysqlclient

Reply

Marsh Posté le 02-09-2008 à 12:37:39    

J'ai viré le pointeur static MYSQL *conn;
et jai mis MYSQL conn;  
Je retrouve le pointeur (&conn)
Là ca marche !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed