Qt 5.2.1 MySQL SQL Driver installieren [SOLVED]
-
wrote on 23 Mar 2014, 11:00 last edited by
Beim Ausführen kommt:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7dann kommt das cout "Database Error" was ich mir ausgeben lasse
-
wrote on 23 Mar 2014, 11:02 last edited by
Bin mit Navicat oder MySQL Workbench mit der Datenbank verbunden.
-
wrote on 23 Mar 2014, 11:11 last edited by
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 -
wrote on 23 Mar 2014, 11:37 last edited by
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 :-) -
wrote on 23 Mar 2014, 11:39 last edited by
Mit dem Befehl:
INCLUDEPATH+=C:/Program Files (x86)\MySQL\include --> Welches verzeichnis will er hier?
Ich glaube es hängt daran
-
wrote on 23 Mar 2014, 13:09 last edited by
Habe es jetzt nochmals probiert in der cml diesmal ohne fehler aber das programm selber funktioniert nicht. kommt wieder driver not loaded :-(
-
wrote on 23 Mar 2014, 13:17 last edited by
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. -
wrote on 23 Mar 2014, 13:17 last edited by
Okay ich habe den Fehler gefunden. Ich musste die libmyswl.dll in C:Windows kopieren und schon läuft es
-
wrote on 23 Mar 2014, 13:20 last edited by
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! -
wrote on 23 Mar 2014, 13:21 last edited by
Jetzt funktioniert es wieder nicht :-(
-
wrote on 23 Mar 2014, 13:23 last edited by
ich dreh durch :-(
-
wrote on 23 Mar 2014, 13:23 last edited by
Hab jetzt die libmysql.dll wieder heraus gelöscht :-(
-
wrote on 23 Mar 2014, 13:24 last edited by
Gibt's eine frische Fehlermeldung? Oder: was wurde zwischen den beiden Builds verändert?
-
wrote on 23 Mar 2014, 13:26 last edited by
@qDebug() << QSqlDatabase::drivers();@
listet er mir wieder alle sauber auf ohne Probleme.
@ QSqlDatabase mydb = QSqlDatabase::addDatabase("QMYSQL");
mydb.setDatabaseName("baur_test_odb");
mydb.setHostName("10.211.55.6");
mydb.setPort(3306);
mydb.setUserName("test");
mydb.setPassword("server");
if(mydb.open())
qDebug() << "Open";
else
qDebug() << "Not Open";@Bei diesem Code sagt er QMYSQL driver not loaded :-(
-
wrote on 23 Mar 2014, 13:35 last edited by
Aber es hat einmal richtig funktioniert?
Kompiliere doch zum Testen mal das Beispiel "SQL Browser" in einem neuen Build-Verzeichnis.
Du solltest die mysql.dll ruhig im Windows Ordner lassen, wenn es damit einmal funktioniert hat. Das kann man später noch korrigieren.
-
wrote on 23 Mar 2014, 13:48 last edited by
Habe jetzt nochmals ein neues Projekt erstellt. Dort geht es :-) ich teste es jetzt mal an einem großen Projekt ausprobieren und nochmal Feedback geben.
Gruß
-
wrote on 23 Mar 2014, 14:27 last edited by
Okay. Wenn ich das neue Projekt:
@#include <QCoreApplication>
#include <QtSql>
#include <iostream>
#include <cstdlib>using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase mydb = QSqlDatabase::addDatabase("QMYSQL");
mydb.setDatabaseName("baur_test_dbo");
mydb.setHostName("10.211.55.6");
mydb.setPort(3306);
mydb.setUserName("test");
mydb.setPassword("server");if(!mydb.open()) qDebug()<<"error"; else qDebug()<<"open"; return a.exec();
}
@ausführe bringt qDebug() "open" aber sobald ich dies in mein Vorhandenes Projekt mache:
@if(mydb1.open())
ui->mysqlLabel->setText(mydb1.databaseName());
else
ui->mysqlLabel->setText("Error");@@QSqlDatabase mydb1;
bool dbOpen1()
{
mydb1 = QSqlDatabase::addDatabase("QMYSQL");
mydb1.setHostName("10.211.55.10");
mydb1.setDatabaseName("baur_test_dbo");
mydb1.setPort(3306);
mydb1.setUserName("test");
mydb1.setPassword("server");if(!mydb1.open()) return false; else return true; } void dbClose1() { mydb1.close(); }@
Bekomme ich einen Fehler beim ausführen. Es erscheint "Error" im Laben :-(
-
wrote on 23 Mar 2014, 14:47 last edited by
Also es geht definitiv nicht. Er lädt von einem alten Projekt das ich mit dem Kaputten laptop gemacht habe auch nicht und sagt das er die Treiber nicht laden kann.
-
wrote on 23 Mar 2014, 14:58 last edited by
Wenn aber das neue Projekt funktioniert, ist dein System Qt + Mysql im Prinzip korrekt eingestellt, die DLLs sind vorhanden und passen zum Qt.
Du musst analysieren, welche Unterschiede zwischen den Projekten vorhanden sind (include?, .pro mit +SQL etc.) und - falls es Meldungen außer "...MYSQL not loaded" gibt, diese bitte posten.
Nochmal der Hinweis: Evtl. vorhandene Dateien im BUILD-Verzeichnios löschen, bevor du die nicht funktionierenden Projekte neu kompilierst.
38/92