Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Nouveau Membre du Club
    Inscrit en
    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.

  2. #2
    Expert Confirmé
    Avatar de TheGzD
    Homme Profil pro Geoffrey Garcia
    Ingénieur R&D / Doctorant
    Inscrit en
    avril 2007
    Messages
    1 319
    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 319
    Points : 2 563
    Points
    2 563

    Par défaut

    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.

  3. #3
    Nouveau Membre du Club
    Inscrit en
    juin 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 82
    Points : 38
    Points
    38

    Par défaut

    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.

  4. #4
    Invité de passage
    Inscrit en
    juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 9
    Points : 4
    Points
    4

    Par défaut

    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...

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •