Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++ > Bibliothèques
Bibliothèques Forum d'entraide sur les bibliothèques C++ : installation, utilisation. Avant de poster : Cours sur les bibliothèques C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/07/2011, 12h19   #1
Keweed
Nouveau Membre du Club
 
Inscription : juin 2008
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 82
Points : 38
Points : 38
Par défaut MySQL connector c++

Bonjour,

Je développe actuellement un serveur en C++ communiquant avec une BDD par l'intermédiaire de mysqlconnector c++.

Mon code compile et fonctionne parfaitement en mode débuggage. En revanche quand je passe en mode release, apparemment, ma fonction openConnection() qui permet de se connecter à la base ne fonctionne plus.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
try
{
	m_driver = get_driver_instance(); //on charge le driver MySQL
	MessageBox(NULL, "123123132", "Service Error", MB_SERVICE_NOTIFICATION | MB_OK);
	m_cnx = m_driver->connect(m_url, m_user, m_passwd); //on crée la connexion
	MessageBox(NULL, "00000000000000", "Service Error", MB_SERVICE_NOTIFICATION | MB_OK);
	m_cnx->setSchema(m_db); //on selectionne la BDD
	m_stmt = m_cnx->createStatement(); //pour executer des requetes
}
catch (sql::SQLException& ex)
{ //erreur lors de la construction de l'objet on le detruit proprement.
	closeConnection();
	std::stringstream t ;
	t << ex.getErrorCode();
	MessageBox(NULL, t.str().c_str(), "123 Error", MB_SERVICE_NOTIFICATION | MB_OK);
	throw ex;
}
m_connected = true;
Les messageBox() ne sont la que pour le débuggage du mode release. Donc pour résumer, ce code tourne et fonctionne (m_driver->connect() passe sans soucis) en mode debug mais en release il provoque une exception avec l'erreur : "Can't connect to ...." avec le code d'erreur 1243156. Pour infos, ex.getSQLstate() me retourne "HY000".

Voila si quelqu'un a un début de piste, je lui serais extrêmement reconnaissant.

Merci d'avance.
Keweed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h05   #2
TheGzD
Membre Expert
 
Avatar de TheGzD
 
Homme Geoffrey Garcia
Ingénieur R&D / Doctorant
Inscription : avril 2007
Messages : 1 317
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey Garcia
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Ingénieur R&D / Doctorant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2007
Messages : 1 317
Points : 2 311
Points : 2 311
Envoyer un message via MSN à TheGzD
N'as-tu pas simplement un problème de configuration en release concernant l'intégration de mysqlconnector c++ ?
__________________
Vous postez du code ? Merci d'utiliser les balises [CODE] ... [/CODE]
Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
__________________
Ingénieur R&D, diplômé en 2007 de l'ISIMA
Doctorant à l'EDSPI de Clermont-Ferrand, depuis 2011.
TheGzD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 14h10   #3
Keweed
Nouveau Membre du Club
 
Inscription : juin 2008
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 82
Points : 38
Points : 38
Non, la configuration est correcte.

Apparemment, et pour une raison qui m'échappe, le problème se corrige en modifiant ça :

Code :
m_cnx = m_driver->connect(m_url, m_user, m_passwd); //on crée la connexion
en ça

Code :
m_cnx = m_driver->connect(m_url.c_str(), m_user.c_str(), m_passwd.c_str()); //on crée la connexion
Voila des fois que ça puisse aider quelqu'un.
Keweed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 11h40   #4
karistote
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 4
Points : 4
Cette solution ne fonctionne pas chez moi...
En revanche, cela fonctionne en utilisant comme paramètre de config :
Propriétés de config > C/C++ > Génération de code > Runtime : /MDd

La raison semble être que les std::string font 28 bits en debug et 32 en release...
karistote est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h36.


 
 
 
 
Partenaires

Hébergement Web