Qt 5.2.1 MySQL SQL Driver installieren [SOLVED]
-
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.dllHabe 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
-
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 -
@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 :-(
-
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.
-
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 :-(