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

Requêtes MySQL Discussion :

Résultats chaotiques !?


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Résultats chaotiques !?
    Bonjour,

    je suis en train de developper un ptit programme en C++ qui travaille avec une base de données mySQL 4.1.12.

    Le probleme est que, quand je lance plusieurs fois mon programme, les résultats obtenus sont plus ou moins aleatoires.

    Je me suis donc dis que cela venait de mes requetes (genre un order by qui n'ordonne pas forcement tjs pareil en cas d'egalité...). J'ai tout verifié, tout modifié en consequence... rien n'y fais c'est chaotique.

    Je me suis donc dis que cela pouvais venir des double que je passe en requete. Ne connaissant la precision que je peux donner sur une requete, j'ai donc tout coupé à 4 chiffres apres la virgule... en vain... le truc est tjs chaotique...

    J'ai dc essayer de lancer les requetes les unes apres les autres (en mettant un "std::cin" apres chacune des requetes) pour debugger et trouver la requete "embettante"... et la, oh miracle, le truc n'est plus chaotique, j'obtiens tjs le meme resultat !! Comme si mySQL ne supportait que ça aille "trop vite".

    On dirait que tt se passait comme si il y avait des acces concurrents sur ma base... mais pourtant je suis le seul user à taper sur ma base qui est locale (sur une station Ubuntu).

    Voici qques bouts de 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
     
    request = new std::ostringstream();
     
    //create the table of the close users
    *request << "CREATE TABLE closeUsers "
       <<  "SELECT t2.NAME_USER, "
       << "(1 - SUM(ABS(t.EVAL_PRODUCT - t2.EVAL_PRODUCT)) / (4 * COUNT(*))) "
       <<	"* IF( COUNT(*) < " <<  common_threshold 
       <<  " , COUNT(*) / " << common_threshold << " , 1 ) AS DISTANCE "
       <<  "FROM temp t "
       <<  "JOIN temp t2 ON t.NAME_USER != t2.NAME_USER AND t.NUM_PRODUCT = t2.NUM_PRODUCT "
       <<  "WHERE t.NAME_USER = '"
       << userName
       << "' "
       <<  "GROUP BY t2.NAME_USER "
       <<  "HAVING DISTANCE > "
       <<  similarity 
       <<  " AND MAX(ABS(t.EVAL_PRODUCT - t2.EVAL_PRODUCT)) <= "
       <<  myConfig->max_merge_eval;
     
    /*std::cout << request->str() << std::endl;
    int iii = 0;
    std::cin >> iii;*/
     
    Query(request->str());
    ou Query est :

    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
     
     
    MYSQL_RES* ProfilsGenerator::Query(std::string query)
    	{
    		if(mysql_real_query(&mysql, query.c_str(), query.size()) != 0) 
    		{
    			std::cout << "Query error : " << mysql_error(&mysql) << std::endl;
    			std::cout << "For the request : " << query << std::endl;
    			std::cout << "Press Enter..." << std::endl;
    			int i = 0;
    			std::cin >> i;
     
    		}
    		return mysql_store_result(&mysql);
    	}
    Donc je sais pas si c'est un probleme connu, un bug connu, une erreur connue (c'est d'ailleurs surement un truc super classique que je ne connais pas ) mais si vous avez la moindre idée d'ou cela peut venir (une requete foireuse, mauvais code c++...), je suis preneur...

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    Si tu affiches la valeur de Query dans ton programme c'est bien toujours la même ?

    Essaie d'exécuter la requête dans un client MySQL classique pour voir si le problème se reproduit...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Oui oui c'est la meme...

    Et en executant la requete dans phpmyadmin au lieu de dans mon code C++, je retrouve un resultat constant.

    Comprends pas...

Discussions similaires

  1. Le résultat de Print ne s'affiche pas...
    Par Red Bull dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2006, 18h56
  2. [requête]donner résultat que si + de n lignes...
    Par Titia765 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 10/06/2003, 12h02
  3. Réponses: 3
    Dernier message: 18/05/2003, 00h16
  4. Réponses: 4
    Dernier message: 28/09/2002, 00h00
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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