Qt 5.2.1 MySQL SQL Driver installieren [SOLVED]
-
In dem Ordner unter mingw48_32\plugins\sqldrivers sollten die noch nicht vorhanden sein.
Wenn du komplett neu installiert hast, prüfe doch die Installation mit der sehr guten Anleitung:
"QT5 MYSQL":http://seppemagiels.com/blog/create-mysql-driver-qt5-windows
Die ist sehr aktuell und ich würde deine Installation Schritt für Schritt danach prüfen. -
Im Beispiel ist MYSQL im Pfad C:\Program Files (x86)\MySQL\MySQL Server 5.5 installiert.
Mit den Leerzeichen gibt es Probleme, daher soll der Pfad im alten 8-stelligen Windows-Format eingegeben werden:
also: C:\PROGRA~2\MySQL\MYSQLS~1
Ich habe aktuell keinen Windows-Rechner zur Verfügung, du solltest den Pfadnamen im cmd-Fenster mit "cd C:\PROGRA~2\MySQL\MYSQLS~1" testen (evtl. musst du PROGRA~1 verwenden)
Für qmake ist es sicherer, die Schrägstriche / anstelle der Backslashes \ einzugeben. -
Soweit ich weiß, gibt es eine Option im dir-Befehl.
Aber zur Not kannst du das auch berechnen:
Es werde die ersten 6 Buchstaben - ohne Leerzeichen - verwendet, dann die Tilde ~ und fortlaufende Ziffern, beginnend mit 1.
Wahrscheinlich ist das MYSQLS~1
Viel Erfolg -
Kannst du denn keinen Unterschied erkennen zwischen den beiden Programmen?
Ich würde die beiden Stück für Stück verkleinern, bis nur noch minimale Datenbank-Funktionen vorhanden sind - dadurch müsstest du dem Fehler auf die Spur kommen.
Was tun die beiden Programme? -
Mit einem Projekt gehe ich über das Menü auf ein Dialog und in diesem wird eine table mittels button in ein tableView angezeigt und sagt mir Driver not loaded Driver not loaded
Die pro: @QT += core gui sql@
Include:@ #include <QtSql>@
Datenbank:@QSqlDatabase db1;
bool dbOpen()
{
db1=QSqlDatabase::addDatabase("QMYSQL");
db1.setDatabaseName("baur_test_dbo");
db1.setHostName("10.211.55.6");
db1.setPort(3306);
db1.setUserName("test");
db1.setPassword("server");
if(!db1.open())
return false;
else
return true;
}
void dbClose()
{
db1.close();
}
@Das andere Programm startet mit dem MainWindow mit TableView und Button und lädt mir die Table im TableView ohne Probleme.
pro: @QT += core gui sql@
include: @#include <QtSql>@
Datenbank:@QSqlDatabase mydb1;
bool openDatabase()
{
mydb1 = QSqlDatabase::addDatabase("QMYSQL");
mydb1.setHostName("10.211.55.6");
mydb1.setDatabaseName("baur_test_dbo");
mydb1.setPort(3306);
mydb1.setUserName("test");
mydb1.setPassword("server");
if(!mydb1.open())
return false;
else
return true;
}void closeDatabase() { mydb1.close(); }
@
Wenn ich bei diesem Programm in Qt/5.2.1/mingw/.../sqldrivers die mysql dll´s herausschneide funktioniert dieses Programm nicht. Also hat er sie theroretisch doch erkannt?
-
Du hast recht, die dlls werden sicher gefunden und verwendet. Und das ist mehr als die halbe Miete!
Ich vermute, dass dein Problem jetzt "nur noch" an dem Dialog liegt, mit dem du im ersten Beispiel die Datenbank öffnest.Zum Absichern würde ich jetzt versuchen, das erste Programm ohne den Dialog zum Laufen zu bringen. Dann solltest du dir im Qt-Beispiel SQL Browser die Verbindung Dialog zur Browser-Klasse anschauen.
@
QSqlTableModel *model = new CustomModel(table, connectionWidget->currentDatabase());
@ -
Ich hab mal bei Dropbox die Programme in einem Zip getan:
"Hier":https://www.dropbox.com/s/95gi1tpalpodp73/Desktop.rar
Mit dem Beispiel komme ich noch nicht so klar :-(
-
Ich denke, ich habe den Fehler gefunden:
Im Projekt database öffnest du mit
@
if(!openDatabase())
ui->statusLabel->setText("Error");
else
ui->statusLabel->setText("Connected...");
@
die Datenbank.Das fehlt - wenn ich es richtig sehe - im Projekt Biodate.
Füge doch in
@void Anzeigen::on_anzeigenButton_clicked()@den dbOpen() ein.