Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
817 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C]mysql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]mysql

n°935193
ffomnislas​h
Posté le 02-01-2005 à 15:28:11  profilanswer
 

Me revoila :D
 
J'ai besoin de faire une requete en C dans une BdD mysql.
 
J'ai trouve quelques tuto qui explique plutot bien (ma requete est simple)
 
Le probleme se situe au niveau du devel de mysql,
Je suis sous fedora core 2 updater a fedora core 3.
J'ai installe mysql ainsi que mysql-devel avec apt.
 
J'ai bien les sources de develloppmeent mysql dans include mais j'ai un probleme avec l'une de ces sources lors de la compilation:
 

Code :
  1. /usr/include/mysql/mysql.h:127: erreur: « MEM_ROOT » ne nomme pas un type
  2. /usr/include/mysql/mysql.h:168: erreur: « MEM_ROOT » ne nomme pas un type
  3. /usr/include/mysql/mysql.h:184: erreur: « MEM_ROOT » ne nomme pas un type


 
S'pa cool comme probleme
Voici ce que ces lignes contiennent:
 

Code :
  1. l. 127: MEM_ROOT alloc;
  2. l. 168: MEM_ROOT field_alloc;
  3. l. 184: MEM_ROOT field_alloc;


 
Apparemment le type MEM_ROOT n'est pas connu ...
 
J'ai cherche sur google et quelques autre personnes ont eu ce probleme mais aucune reponse excepte un gars qui disait de reinstaller les devel, ce que j'ai fait ...
 
Comment resoudre ce pb ? des idees ?

mood
Publicité
Posté le 02-01-2005 à 15:28:11  profilanswer
 

n°935201
ouned-codi​ng
Posté le 02-01-2005 à 15:41:54  profilanswer
 

Salut,
 

Citation :

Comment resoudre ce pb ? des idees ?


 
Certainement.
 
 
 
C'est quelle version ?!
 
(tu as essayé avec une autre version ?)
 
et il y a un truc que je n'ai pas saisie, tu dis avoir installé mysql via APT (donc je pense que tu n'as pas compilé les src toi meme (ou si?)), c'est de quelle compilation que tu fais allusion, compile de mysql ou de ton programme en C ?


Message édité par ouned-coding le 02-01-2005 à 16:02:55
n°935211
ffomnislas​h
Posté le 02-01-2005 à 16:03:04  profilanswer
 

3.23.58-13 pour mysql mysql-devel mysql-server
 
je vais voir pour les autres version, deja voir quelle est la derniere

n°935212
ouned-codi​ng
Posté le 02-01-2005 à 16:05:28  profilanswer
 

mysql-4.1 apparement.

n°935213
ffomnislas​h
Posté le 02-01-2005 à 16:07:02  profilanswer
 

oui effectivement il semblerait que ce soit la 4.1
Je vais installer les rpm et voir ce qu'il se passe

n°935214
ouned-codi​ng
Posté le 02-01-2005 à 16:07:48  profilanswer
 

ok tiens nous au courrant

n°935367
ffomnislas​h
Posté le 02-01-2005 à 21:44:03  profilanswer
 

j'ai essaye de mettre la version 4 ou 4.1 de mysql mais je n'ai pas reussi car il y a des pb de dependance entre les paquetages en raison d'un pb de licence (qui pose egalement pb avec debian apparemment).
 
:/
 
Je regarderais encore demain je pense


Message édité par ffomnislash le 02-01-2005 à 21:48:53
n°935422
ouned-codi​ng
Posté le 02-01-2005 à 23:22:07  profilanswer
 

ok ben si tu veux on essaye sur la version que tu as sous la main.
 
Et il y a un truc que je n'ai pas saisie, tu dis avoir installé mysql via APT (donc je pense que tu n'as pas compilé les src toi meme (ou si?)), c'est de quelle compilation que tu fais allusion, compile de mysql ou de ton programme en C ?


Message édité par ouned-coding le 02-01-2005 à 23:22:17
n°935450
ffomnislas​h
Posté le 03-01-2005 à 00:14:26  profilanswer
 

de mon programma en C bien sur (sinon je serais sur OS alternatif :D)
 
edit ---
C'est un programme en C++ et pas en C donc compiler avec g++ ...
Je vais tenter une compilation des lignes mysql en C pour voir
 
verditc compilation avec gcc
J'ai toujours les erreurs de MEM_ROOT + d'autres qui semblent en decouler (erreur de syntaxe apres ...)
-----
 
mysql est installe, je peut le lancer (pas teste de requete mais bon ...)
 
Voici les quelques lignes de codes en rapport avec mysql  
Sans ces lignes le programme fonctionne impecablement
 

Code :
  1. #include <mysql/my_global.h>
  2. #include <mysql/mysql.h>
  3. MYSQL *conn;//poignée de connexion
  4. MYSQL *erreur;//pour récupérer les erreurs
  5. const char *host;//nom de l'hôte
  6. const char *user;//login
  7. const char *passwd;//mot de passe
  8. const char *db;//base de données
  9. unsigned int port;//port de connexion sur le serveur
  10. const char *unix_socket;//bof :)
  11. unsigned long client_flag;//paramètre de flag client
  12. void connection_BdD(void)
  13. {
  14. host        = "locahost"; //localhost
  15. user        = "root"; //mon login
  16. passwd      = NULL; //je n'ai pas de mot de passe (pas bien :) )
  17. db          = "onligan"; //ma base de données se nomme onligan
  18. port        = 3306; //mon serveur est sur le port par défaut.
  19. //initialisation de la connection
  20. if((conn = mysql_init(NULL))==NULL)
  21. {
  22. printf("Mémoire insuffisante pour allouer une poignée de connection mysql\n" );
  23. exit(-1);
  24. }
  25. //connection sur le serveur
  26. if((erreur=mysql_real_connect(conn,host,user,passwd,db,port,NULL,0))==NULL)
  27. {
  28. printf("la connection sur le serveur a échoué !\n" );
  29. printf("cause : %s\n",mysql_error(conn));
  30. exit(1);
  31. }
  32. //déconnection du serveur
  33. mysql_close(conn);
  34. exit(-1);
  35. }


 
Autre petit detail qui a peut etre son importance
Lors de l'ibstallation de mysql-devel il a tous mis /usr/include/mysql/
or mysql.h va chercher my_config.h et dbug.h dans /usr/include, j'ai donc copie ces deux  fichiers au bon endroit.


Message édité par ffomnislash le 03-01-2005 à 00:21:12
n°935459
ffomnislas​h
Posté le 03-01-2005 à 00:27:59  profilanswer
 

J'ai peut etre trouve ...
 
En fouillant un peu sur google je suis tombe sur:
 

Code :
  1. typedef struct st_mem_root MEM_ROOT;


 
Avec ca j'obtenais une erreur, type incomplet
J'ai alors essaye:
 

Code :
  1. typedef struct st_mem_root* MEM_ROOT;


 
et ca passe a la compilation.
 
Maintenant j'ai une erreur de linkage parce que je n'ai pas ajoute le lien pour mysql ds la ligne de compilation.
 
Je cherche ca et je confirme si la dolution ci dessus fonctionne


Message édité par ffomnislash le 03-01-2005 à 00:28:14
mood
Publicité
Posté le 03-01-2005 à 00:27:59  profilanswer
 

n°935460
ouned-codi​ng
Posté le 03-01-2005 à 00:31:17  profilanswer
 

Essayes de regarder si "</usr/include/mysql/my_alloc.h" est bien présent.  
 
Essayes aussi en rajoutant "#include <mysql/my_sys.h>"


Message édité par ouned-coding le 03-01-2005 à 00:32:12
n°935461
ffomnislas​h
Posté le 03-01-2005 à 00:40:47  profilanswer
 

my_alloc n'est pas present (ni dans include/ ni ds /include/mysql)
 
si j'inclu my_sys.h j'ai encore plus d'erreur de type n'etant pas declare. (my_boll par ex)
 
et sinon j'ai vu qu'il fallait ajouter -lmysqlclient lors de la compilation mais chez moi le compilateur me dit tout simplemen:

Code :
  1. /usr/bin/ld: ne peut trouver -lmysqlclient


 
:/


Message édité par ffomnislash le 03-01-2005 à 00:43:22
n°935466
ouned-codi​ng
Posté le 03-01-2005 à 01:06:04  profilanswer
 

Question bête, libmysqlclient et *-dev sont installés ?

n°935467
ffomnislas​h
Posté le 03-01-2005 à 01:09:55  profilanswer
 

j'ai installe:
- mysql (descritpion: MySQL client programs and shared libraries. )
- mysql-devel
- mysql-server
 

[ffomnislash@Anubis ~]$ rpm -q mysql
mysql-3.23.58-13
[ffomnislash@Anubis ~]$ rpm -q mysql-devel
mysql-devel-3.23.58-13
[ffomnislash@Anubis ~]$ rpm -q mysql-server
mysql-server-3.23.58-13
 


Message édité par ffomnislash le 03-01-2005 à 01:12:15
n°935483
ouned-codi​ng
Posté le 03-01-2005 à 02:23:09  profilanswer
 

et que te renvoi 'cat /etc/ld.so.conf | grep libmysqlclient',
'ls  /usr/lib/mysql | grep libmysqlclient' ?

n°935498
ffomnislas​h
Posté le 03-01-2005 à 07:38:04  profilanswer
 

[ffomnislash@localhost ~]$ cat /etc/ld.so.conf | grep libmysqlclient
[ffomnislash@localhost ~]$ ls  /usr/lib/mysql | grep libmysqlclient
libmysqlclient.a
libmysqlclient_r.a
libmysqlclient_r.so
libmysqlclient_r.so.10
libmysqlclient_r.so.10.0.0
libmysqlclient.so
libmysqlclient.so.10
libmysqlclient.so.10.0.0

n°935503
ouned-codi​ng
Posté le 03-01-2005 à 08:46:29  profilanswer
 

salut
 

Citation :

et que te renvoi 'cat /etc/ld.so.conf | grep libmysqlclient'


 
désolé, ptite erreur, c'est 'cat /etc/ld.so.conf | grep mysql' et si ca te donne rien de bon
 
essayes ça :
 

Citation :


]$ echo /usr/lib/mysql >> /etc/ld.so.conf
]$ ldconfig


 
 
Puis je crois que je vais aller faire un peu dodo aussi  
 
 :sweat: shutdown -h now

n°935508
ffomnislas​h
Posté le 03-01-2005 à 08:57:45  profilanswer
 

Il fallait compiler avec -L/usr/lib/mysql
La lib n'etait pas au bon endroit :D
 
Sinon apparemment la definition du type MEM_ROOT semble etre bonne ;)
 
ouned-coding=> Tes en France ?


Message édité par ffomnislash le 03-01-2005 à 08:58:18
n°935895
ouned-codi​ng
Posté le 03-01-2005 à 16:58:45  profilanswer
 

Citation :

ouned-coding=> Tes en France ?


 
:lol:  
 
meme dans le pays basque (pays du jambon de bayonne)  
 

n°935971
ffomnislas​h
Posté le 03-01-2005 à 18:22:13  profilanswer
 

et tu ne dors jamais ? :D

n°936224
jagstang
Pa Capona ಠ_ಠ
Posté le 04-01-2005 à 03:48:41  profilanswer
 

Code :
  1. passwd      = NULL; //je n'ai pas de mot de passe (pas bien :) )


 :sweat:  
 
ben si t'as pas de mot de passe
 

Code :
  1. passwd = "" ;


 

n°936561
ffomnislas​h
Posté le 04-01-2005 à 13:19:33  profilanswer
 

le mot de passe va arriver :D

n°936569
jagstang
Pa Capona ಠ_ಠ
Posté le 04-01-2005 à 13:28:26  profilanswer
 

je veux dire attention à ne pas confondre NULL et chaine vide.  Enfin si tu veux être sûr que ça plante...
 

n°937065
ffomnislas​h
Posté le 04-01-2005 à 18:07:57  profilanswer
 

ok  :jap:  
 
Je vais changer de suite alors.
 
Ceci dit ce code n'est pas de moi, je l'ai copie d'un site  :whistle:

n°938603
jagstang
Pa Capona ಠ_ಠ
Posté le 05-01-2005 à 22:38:03  profilanswer
 

encore pire. et tu t'étonnes que ça fonctionne pas ?

n°938806
farib
Posté le 06-01-2005 à 09:45:01  profilanswer
 

JagStang a écrit :

encore pire. et tu t'étonnes que ça fonctionne pas ?


Code :
  1. # const char *host;//nom de l'hôte
  2. # const char *user;//login
  3. # const char *passwd;//mot de passe
  4. # const char *db;//base de données
  5. # unsigned int port;//port de connexion sur le serveur
  6. # const char *unix_socket;//bof :)
  7. # unsigned long client_flag;//paramètre de flag client
  8. #
  9. #
  10. # void connection_BdD(void)
  11. # {
  12. #
  13. # host        = "locahost"; //localhost
  14. # user        = "root"; //mon login
  15. # passwd      = NULL; //je n'ai pas de mot de passe (pas bien :) )
  16. # db          = "onligan"; //ma base de données se nomme onligan
  17. # port        = 3306; //mon serveur est sur le port par défaut


 
c pas mal ce genre d'affectation :o

n°939420
ffomnislas​h
Posté le 06-01-2005 à 16:46:20  profilanswer
 

effectivement il manque des malloc mais pourtant le code fonctionne parfaitement ...

n°939495
rolphin
Posté le 06-01-2005 à 17:41:54  profilanswer
 

Il ne manque pas de malloc...
Ce sont des pointeurs et pas de tableaux de char...
 
 
passwd = "";
c'est pareil que
passwd = NULL;
et pareil que
passwd = 0;
et pareil que
passwd = "\0abcdefghijklmnopqrstuvwxyz";

n°939727
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-01-2005 à 23:02:19  profilanswer
 

rolphin a écrit :


passwd = "";
c'est pareil que
passwd = NULL;


Euh, non ! La chaine "" existe, elle a une adresse non nulle, par contre c'est un tableau de 1 char qui vaut 0.

Citation :


et pareil que
passwd = 0;
et pareil que
passwd = "\0abcdefghijklmnopqrstuvwxyz";


Non, pas du tout.

passwd = NULL;


est pareil que

passwd = 0;


d'autre part,

passwd = "";


est pareil que

passwd = "\0abcdefghijklmnopqrstuvwxyz";



---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°939847
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-01-2005 à 09:27:08  profilanswer
 

rolphin a écrit :


passwd = "";
c'est pareil que
passwd = NULL;
et pareil que
passwd = 0;
et pareil que
passwd = "\0abcdefghijklmnopqrstuvwxyz";


[:daplopbot]

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C]mysql

 

Sujets relatifs
Différence entre SHOW COLUMN et mysql_fetch_field[MySQL]Valeur autorisée pour un seul enregistrement ?
MySql accepte-t'il les requêtes imbriquées ?Like avec mySql
[MySQL] La quête de la requête....[MYSQL] requete avec dissociation
[Php MySql] Limites d'une requêteRecherche dans MySQL en PHP
insérer requete LDAP dans Mysqllimite de connexion a mysql?
Plus de sujets relatifs à : [C]mysql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR