Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Qt > Bases de données
Bases de données Forum d'entraide sur l'utilisation des bases de données dans Qt
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 27/12/2012, 19h51   #1
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
Par défaut Erreur chargement driver SQL

Bonjour à tous,

Voilà, j'aimerais me connecter à une base distante via mon logiciel, je rentre donc les infos comme il faut, mais au moment de la compilation, sa plante avec comme erreur :

418006.png

Et comme message d'erreur :

Code :
1
2
3
4
5
6
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: 
Cannot mix incompatible Qt library (version 0x40700) with this library (version 0x40801)
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
QWaitCondition: Destroyed while threads are still waiting

Voilà mon code de connexion :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//User login
    QSqlDatabase user = QSqlDatabase::addDatabase("QMYSQL");
    user.setHostName("");
    user.setUserName("");
    user.setPassword("");
    user.setDatabaseName("");
 
    if(user.open())
    {
        QMessageBox::information(mainWindows,"Connexion réussie !","Vous êtes maintenant connecté à " + user.hostName());
        user.close();
    }
    else
    {
        QMessageBox::critical(mainWindows,"Erreur de connexion ...","La connexion a échouée, désolé");
    }

J'ai vu qu'il fallait compilé le driver MySQL pour Qt pour avoir deux fameuse .dll, mais la compilation échoue.

Je rentre cette commande, là pas de problème :

Code :
cd %QTDIR%\src\plugins\sqldrivers\mysql
Puis je rentre cette commande mais là, il y a un bug :

Code :
1
2
 
qmake "INCLUDEPATH+=C:\Users\keylog\Desktop\mysql\\include" "LIBS+=C:\Users\keylog\Desktop\mysql\\lib\\libmysql.lib" mysql.pro
c8VUS.png

En regardant une fois de plus, j'ai l'impression que le QTDIR pointent sur le mauvais chemin ( mauvaise installation de Qt ). Qu'est-ce que vous en pensez ?

Merci d'avance pour votre aide.
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 16h34   #2
charlespf
Membre Expert
 
Avatar de charlespf
 
Homme
Développeur C/C++/Qt/PHP
Inscription : mai 2005
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur C/C++/Qt/PHP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 222
Points : 1 529
Points : 1 529
,

En regardant la dernière pièce jointe, tu n'as pas généré le pilote MySQL pour Qt. Tu as juste exécuté la commande qmake qui génère le makefile pour la compilation mais pas le pilote.
Il faut que tu exécutes la commande nmake pour générer le pilote.

Par ailleurs, as-tu suivi l'article de dourouc05 pour la génération du pilote Mysql : http://qt.developpez.com/tutoriels/q...pilotes/mysql/ ?

A partir de là, je pense que tu arriveras à résoudre ton pb .

A+
charlespf
charlespf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 14h24   #3
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
Justement, j'ai suivis le tutoriel à la lettre, et toujours la même chose.
Par ailleurs, dans le tutoriel, il ne nous parle pas de la génération du pilote, juste de l'installation de MySQL et de la compilation.
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 14h34   #4
charlespf
Membre Expert
 
Avatar de charlespf
 
Homme
Développeur C/C++/Qt/PHP
Inscription : mai 2005
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur C/C++/Qt/PHP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 222
Points : 1 529
Points : 1 529
OK.

As-tu réussi à compiler les DLL du pilote Qt pour MySQL ?
Quel compilateur utilises-tu ? MinGW ? Visual C++ ?

A+

Edit: je viens également de voir un truc, il faut doubler les '\' dans la commande qmake (mettre '\\' à la place de '\').
charlespf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 10h26   #5
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
Non, je n'ai pas réussi à compiler les dll et j'utilise MinGW version 4.4 ainsi que Qt 4.8.4 si sa peux aider.

Et oui, j'ai bien mis les doubles backslashes =/
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 08h54   #6
charlespf
Membre Expert
 
Avatar de charlespf
 
Homme
Développeur C/C++/Qt/PHP
Inscription : mai 2005
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur C/C++/Qt/PHP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 222
Points : 1 529
Points : 1 529
Salut,

Ok. Je pose cette question car dans ton premier post, la deuxième image indique que tu utilises Qt en version 2010.5 (4.7.0).

Peux-tu donner les erreurs de compilation si tu les as, afin de voir d'où vient le problème ?

En te remerciant,

A+
charlespf
charlespf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 18h33   #7
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
Quelles erreurs de compilations ? Les seules erreurs que j'ai sont celle là et quand j'essaye d’exécuter la commande mingw32-make -f Makefile.Debug, elle n'est aps reconnu en tant que commande existante =/

PS: Désolé pour le temps de réponse, je n'ai pas eu l'occasion de revenir ici avant aujourd'hui.
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 22h05   #8
charlespf
Membre Expert
 
Avatar de charlespf
 
Homme
Développeur C/C++/Qt/PHP
Inscription : mai 2005
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur C/C++/Qt/PHP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 222
Points : 1 529
Points : 1 529


Pas de soucis pour le temps de réponse, je peux aussi mettre un peu de temps à répondre, n'étant pas tout le temps sur le forum .

OK, je vois le problème. En gros la commande "mingw32-make" qui permet la compilation n'est pas présente dans ton PATH.
Pour résoudre ce problème, quand tu as installé Qt sur ta machine, le programme d'installation a du te créer un groupe dans le menu démarrer de Windows. Dans ce groupe est présent une icone d'invite de commande qui permet de configurer l'environnement de compilation dans ton PATH ainsi que la variable QT_DIR.

Cela devrait être bon ensuite

A+
charlespf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 18h54   #9
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
Effectivement, j'ai Qt 4.8.4 Prompt Command dans le dossier démarrer de mon Qt mais quelles commandes faut-il exécuter pour configurer ces PATH ?
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 21h57   #10
charlespf
Membre Expert
 
Avatar de charlespf
 
Homme
Développeur C/C++/Qt/PHP
Inscription : mai 2005
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur C/C++/Qt/PHP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 222
Points : 1 529
Points : 1 529
Salut

Normalement lorsque tu lances le Prompt Qt depuis le menu démarrer, une invite de commandes s'affiche avec des informations au départ t'indiquant que des variables d'environnement ont été configurées et notamment la variable PATH.

Si tu tapes "mingw32-make" (sans les guillements) dans l'invite, tu devrais avoir un message d'erreur t'indiquant qu'il n'y a pas de fichiers.

Si c'est le cas, tu peux alors suivre l'article de dourouc05 cité dans les posts plus haut pour compiler le plugin MySQL pour Qt.

A+
charlespf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 22h45   #11
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
Voilà ce que j'ai en lancant la cmd de Qt et en entrant la commande que tu me dis d'entrer :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Setting up a MinGW/Qt only environment...
-- QTDIR set to C:\Qt\4.8.4
-- PATH set to C:\Qt\4.8.4\bin
-- Adding C:\Dev\MinGW\bin to PATH
-- Adding C:\Windows\System32 to PATH
-- QMAKESPEC set to win32-g++
 
C:\Qt\4.8.4>mingw32-make
'mingw32-make' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
 
C:\Qt\4.8.4>
Mais MinGW n'est pas installé à C:\Dev\MinGW\bin mais à C:\MinGW\bin. Comment changer sa ? Parce que je pense que c'est sa qui bloque.
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 23h15   #12
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
C'est bon, j'ai changé la localisation de mon dossier MinGW pour que sa corresponde à ce que Qt a, et la compilation a l'air de fonctionner mais je me retrouve avec des dll pour sqlite et non pour MySQL, est-ce normal ?
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 08h44   #13
charlespf
Membre Expert
 
Avatar de charlespf
 
Homme
Développeur C/C++/Qt/PHP
Inscription : mai 2005
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur C/C++/Qt/PHP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 222
Points : 1 529
Points : 1 529
Salut,

Il faut aller dans le répertoire C:\Qt\4.8.4-mingw\src\plugins\sqldrivers\mysql\debug et C:\Qt\4.8.4-mingw\src\plugins\sqldrivers\mysql\release pour vérifier que les DLL sont présentes (une dans chacun des répertoires).

Ensuite, il faut les copier dans le répertoire suivant: C:\Qt\4.8.4-mingw\plugins\sqldrivers.

POur vérifier la bonne prise en compte des plugins:
1) Créer un projet Qt en console ;
2) Dans le fichier .pro, ajouter "sql" (sans les guillemets) dans la ligne QT +=
3) Dans le fichier main.cpp :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#include <QtCore>
#include <QtSql>
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    QStringList drivers = QSqlDatabase::drivers();
 
    foreach(QString driver, drivers)
    {
        qDebug() << driver;
    }
 
    return 0;
}
4) En exécutant ce code, tu verras afficher dans la console les pilotes MySQL pris en compte.

A+
charlespf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 10h04   #14
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
En faisant sa, j'obtiens sa :
Code :
1
2
3
4
5
"QSQLITE"
"QODBC3"
"QODBC"
"QMYSQL"
Appuyez sur <ENTR&#9556;E> pour fermer cette fenÛtre...
CrashBC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 11h49   #15
charlespf
Membre Expert
 
Avatar de charlespf
 
Homme
Développeur C/C++/Qt/PHP
Inscription : mai 2005
Messages : 222
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur C/C++/Qt/PHP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 222
Points : 1 529
Points : 1 529
Salut

Cela fonctionne bien . Ton pilote est bien compilé et pris en compte par Qt.

A+
charlespf
charlespf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 12h28   #16
CrashBC
Invité régulier
 
Homme
Lycéen
Inscription : mai 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2011
Messages : 23
Points : 7
Points : 7
Bah écoute, merci pour la patience dont tu as fait preuve et pour ton aide, je t'en suis reconnaissant

A bientôt !
CrashBC 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 04h07.


 
 
 
 
Partenaires

Hébergement Web