Qt 5.2.1 MySQL SQL Driver installieren [SOLVED]



  • Hallo Forum,

    ich werde langsam zum Elch. Ich suche mittlerweile seit 3 Tagen nach einer guten Anleitung wie man die SQL Treiber in Qt integrieren kann.
    Weis jemand von euch wie man das tut :-( habe MySQL C++ Lib schon installiert weis aber momentan überhaupt nicht weiter.
    Kann mir jemand von euch vielleicht helfen?

    Gruß Alex



  • Hallo Alex,
    wie weit bist du denn mit deinen Forschungsarbeiten?
    Welche Systemumgebung? Was läuft? Was nicht? Hast du Fehlermeldungen?



  • Also vielleicht habe ich mich unklar ausgedrückt. Die Lib habe ich mit mysql installer installiert :-D



  • Aber deine Installation funktioniert ja (noch) nicht:
    Hast du die Qt plugins für mysql schon gebaut?
    In der Qt-Hilfe unter : Qt 5.2 -> Qt SQL -> SQL Database Drivers
    Wenn du die plugins hast, ist der sicherste Weg zum Testen, eine Beispiel-Anwendung zu kompilieren (z.B. den SQL Browswer). Wenn das funktioniert, wirst du auch deine Anwendungen zum Laufen bringen können.



  • Ne die Plugins habe ich noch nicht gebaut. Auf meinem kaputten laptop hat es einer vom Kurs so zack zack zack gemacht und hat es mir leider nicht erklärt :-(



  • Aber du hast das plugin, bzw. die mysql-dlls auf deinem Rechner?
    Wenn ja, könntest du als ersten Ansatz in dem Verzeichnis, das deine Projekt-Exe enthält (im Creator unter Projekte -> Build-Verzeichnis definiert), ein Unterverzeichnis sqldrivers erstellen und dann die mysql-dlls hineinkopieren.



  • Hab halt im Verzeichnis C: die lib von MySQL connector c++



  • Die lib werden benötigt, um das plugin zu erstellen.
    Das plugin besteht aus den DLLs: qsqlmysql4.dll und qsqlmysqld4.dll
    Wenn du die nicht hast, musst du sie bauen (s.o. Qt 5.2 -> Qt SQL -> SQL Database Drivers). Die DLLs müssen exakt zu deiner Systemumgebung passen, daher sollten sie stets in der passenden Konfiguration erstellt werden.



  • @cd %QTDIR%\src\plugins\sqldrivers\mysql
    qmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=C:/MYSQL/MySQL Server <version>/lib/opt/libmysql.lib" mysql.pro
    nmake@

    Das habe ich gefunden. gebe ich das bei der cmd ein



  • Das schaut nicht schlecht aus - am Ende müsstest du die DLLs erhalten, wenn das make ohne Fehler läuft.
    Falls Fehlermeldungen erscheinen, bitte posten. Bin allerdings jetzt ein paar Stunden nicht am Rechner...



  • Du kein Problem. Werde es mal einfach Probieren. Dann sehe ich ja was passiert.

    Danke nochmals ;-)



  • Sehr gern :-)



  • @qmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=C:/MYSQL/MySQL Server <version>/lib/opt/libmysql.lib" mysql.pro@

    Hab diesen Befehl ausführen wollen und es kam als Meldung:

    'qmake' is not recognized as an internal or external comman, operable program or batch file

    und befinde mich in folgenden ordner:

    c:\Qt\5.2.1\Src\qtbase\src\plugins\sqldrivers\mysql



  • Wir kommen der Sache näher:
    qmake.exe ist ein Tool, das zum Umfang von Qt gehört (ein Generator für makefiles) und mit Qt installiert wird. Du solltest jetzt prüfen, ob das Programm vorhanden ist und PATH entsprechend über die Systemsteuerung anpassen.



  • Was meinst du mit PATH?



  • Unter den Ordner mingw48_32 in der bin gibt es ne qmake



  • Sieht schon nicht schlecht aus!
    Path ist eine Systemvariable in Windows, die den Suchpfad enthält.
    Ein Programm wie qmake.exe wird im cmd-Fenster nur dann gefunden, wenn es in einem Verzeichnis steht, auf das "Path" verweist.
    Die Variable "Path" musst du wie folgt bearbeiten:
    bq.
    Systemsteuerung
    ->System und Sicherheit
    ->System
    ->Erweiterte Systemeinstellungen
    ->Umgebungsvariablen
    ->Systemvariablen

    in der Listbox Path auswählen und dann:

    Bearbeiten
    ans Ende der Zeile ein Semikolon und den gesamten Pfad eintragen
    (Bsp. ;C:\Qt5.2.1\5.2.1\mingw48_32)



  • @cd %QTDIR%\src\plugins\sqldrivers\mysql@

    Bei dem kommt The system cannot find the path specified.



  • Den Ordner sqldrivers finde ich in mehrere Ordner von Qt. Ist es dir unter Tools\QtCreator\bin\plugins\sqldrivers?



  • Befinde mich nun im folgenden Pfad

    C:\Qt\5.2.1\Src\qtbase\src\plugins\sqldrivers\mysql

    und habe danach folgendes eingegeben

    qmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=C:/mysql/MySQL Server 5.6/lib/libmysql.lib" mysql.pro

    Danach hat er mir nur wieder den Pfad angezeigt ohne irgendwelche Meldung



  • Das ist korrekt, den Ordner sqldrivers gibt es mehrfach: Im Quellcode und im Qt-Pfad.
    Die kompilierten Treiber (.dll) müssen in:
    C:\Qt\Qt5.2.0\5.2.1*\mingw48_32\plugins\sqldrivers*
    liegen



  • Habe folgende *.dll
    qsqlite.dll
    qsqlited.dll
    qsqlmysql.dll
    qsqlmysqld.dll
    qsqlodbc.dll
    qsqlpsql.dll
    qsqlpsqld.dll

    :-)



  • Führe ich folgendes Projekt aus:

    @QSqlDatabase mydb1 = QSqlDatabase::addDatabase("QMYSQL");
    mydb1.setHostName("10.211.55.6");
    mydb1.setDatabaseName("test");
    mydb1.setUserName("test");
    mydb1.setPassword("server");
    mydb1.setPort(3306);

    if(!mydb1.open())
    {
        cout << "Database Error";
        return false;
    }
    else
    {
        cout << "Database true";
        return true;
    }@
    

    Und in der pro habe sql mit qmake gemacht



  • Funktioniert das denn jetzt?



  • Nein. Leider nicht :-(

    wo muss ich die libmysql.dll hin kopieren? musste man die nicht in ein windows Verzeichnis laden?



  • Die dlls müssen in C:\Qt\Qt5.2.0\5.2.1\mingw48_32\plugins\sqldrivers liegen. (evtl. C:\Qt\Qt5.2.0\5.2.1 gegen den entsprechenden Pfadnamen deines Rechners austauschen)
    Wenn das nicht funktionieren sollte (was meist an Problemen mit der Path-Variablen liegt) kannst du auch ein Unterverzeichnis sqldrivers unter dem Build-Verzeichnis anlegen, das im Creator unter Projekte definiert ist (z.B. QBUILD\debug\meinprojekt), und die dlls auch dahin kopieren.
    Das ist zwar nicht elegant aber zum Testen ggf. sinnvoll.



  • Also im Pfad:
    C:\Qt\5.2.1\mingw48_32\plugins\sqldrivers
    liegen folgende Treiber:
    qsqlite.dll
    qsqlited.dll
    qsqlmysql.dll
    qsqlmysqld.dll
    qsqllodbc.dll
    qsqllodbcd.dll
    qsql.psql.dll
    qsqlpsqld.dll

    Habe es jetzt in den Ordner build-<meinProjekt>/debug/sqldrivers kopiert und das projekt bereinigt und qmake ausgeführt. leider immer noch mit der Meldung das er die Treiber nicht laden konnte



  • Poste doch bitte mal die exakte Fehlermeldung - da werden wir hoffentlich einen Hinweis finden können.



  • Beim Ausführen kommt:

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

    dann kommt das cout "Database Error" was ich mir ausgeben lasse



  • Bin mit Navicat oder MySQL Workbench mit der Datenbank verbunden.



  • Das bringt uns weiter:
    Qt zeigt dir mit der Meldung, dass ein mysql Treiber vorhanden ist (available driver QMSQL) , dass dieser aber nicht verwendet werden kann (not loaded).
    Eine Ursache hierfür kann ein Mix zwischen 64-Bit und 32-Bit Versionen sein. Wenn Du mit mingw arbeitest, musst Du auch die 32-Bit Version von MYSQL verwenden. Ist dem so?
    Wenn ja, dann hilft evtl., das Projekt nochmals komplett neu erstellen zu lassen.
    Wenn nein, wird es sich nicht vermeiden lassen, die 32-Bit MYSQL zu installieren und das plugin neu zu bauen.
    Hier ist ein empfehlenswerter Link, der sich auf das Problem bezieht:
    "MYSQL WIN":http://seppemagiels.com/blog/create-mysql-driver-qt5-windows



  • Habe jetzt alles Deinstalliert und alles auf 32bit installiert.
    Nun sagt er mir:
    The filename, directory name, or volume label syntax is incorrect
    Mal schauen woran es liegt :-)



  • Mit dem Befehl:

    INCLUDEPATH+=C:/Program Files (x86)\MySQL\include --> Welches verzeichnis will er hier?

    Ich glaube es hängt daran



  • Habe es jetzt nochmals probiert in der cml diesmal ohne fehler aber das programm selber funktioniert nicht. kommt wieder driver not loaded :-(



  • Lösche nochmals die bereits im Build-Verzeichnis vorhandenen Dateien und lasse den Build neu erstellen.
    Das war auch in meiner Win7-Installation nach zahllosen Stunden der letzte Fehler.



  • Okay ich habe den Fehler gefunden. Ich musste die libmyswl.dll in C:Windows kopieren und schon läuft es



  • Prima, freut mich! Aber - streng genommen - gehört sie da nicht hin, Qt müsste sie auch in sqldrivers erkennen.
    Aber das ist Kür, wichtiger ist, dass es jetzt funktioniert!



  • Jetzt funktioniert es wieder nicht :-(



  • ich dreh durch :-(



  • Hab jetzt die libmysql.dll wieder heraus gelöscht :-(


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.