Seite 1 von 2

QT4 & MySQL keine Verbindung

Verfasst: 13. Dezember 2005 13:57
von [ToTTo]
Hallo,

ich versuche grade mich zu einer MySQL 4 DB mit Hilfe von QT 4 zu connecten aber leider haut es nicht hin....
Es wird auch keine Verbindung zum localhost aufgenommen (sehe ich in meiner FireWall).

Ich habe einfach mal den Standardbenutzer und die Standard DB verwendet.

Über PHPMyAdmin komme ich ohne Probleme auf die DB.
Die mysql.h ist auch vorhanden.

Code: Alles auswählen

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

static bool createConnection()
{
    QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
	database.setHostName("localhost");
    database.setDatabaseName("mysql");
	database.setUserName("root");
    database.setPassword("");
    bool ok = database.open();

    
    if (ok == false) {
        QMessageBox::critical(0, qApp->tr("Cannot open database"),
            qApp->tr("Unable to establish a database connection.\n"
                     "This example needs SQLite support. Please read "
                     "the Qt SQL driver documentation for information how "
                     "to build it.\n\n"
                     "Click Cancel to exit."), QMessageBox::Cancel,
                     QMessageBox::NoButton);
        return false;
    }

    QMessageBox::information(0, "OK", "OK");
    return true;
}
Woran kann es liegen, dass ich keine Verbindung bekomme?

Re: QT4 & MySQL keine Verbindung

Verfasst: 13. Dezember 2005 14:57
von macman
Die üblichen Verdächtigen ausgeschlossen? Falscher Datenbankname, falscher Username, falsches Passwort, falscher Port.

Verfasst: 13. Dezember 2005 16:15
von [ToTTo]
Hab den Port 3306 noch hinzugefügt aber es ändert sich nichts....
Kriege einfach keine Verbindung.
Gibt es noch eine andere Möglichkeit zur Herstellung einer Verbindung oder stimmt vielleicht was mit dem QMySQLDriver nicht?

Verfasst: 13. Dezember 2005 17:29
von BartSimpson
Lass dir doch mal den Fehler ausgeben mit:

Code: Alles auswählen

QMessageBox::critical(0,"Fehler",database.lastError().databaseText() ()+"\r\n"+database.lastError().driverText(),QMessageBox::Ok,QMessageBox::NoButton);

Verfasst: 13. Dezember 2005 18:22
von [ToTTo]
Can't create TCP/IP socket kommt als fehler.

Was muss ich da ändern?

Verfasst: 13. Dezember 2005 19:06
von BartSimpson
Das hat mit der Firewall den nix zu tun. Denn da würdes du was bekommen von wegen, das der Server nicht erreichbar währe. Wenn der aber kein Socket erstellen kann, dann hat vermutlich dein TCP Stack eine Machke. Was haste denn für ein System?

Verfasst: 14. Dezember 2005 12:08
von [ToTTo]
WIN XP Prof Sp2
Apache 2
MySQL 4.1.9
QT 4.0.1
MS Visual C++ 6

hab aber leider keine Ahnung wie ich das mit dem TCP STack auf die Reihe kriegen soll.

Verfasst: 14. Dezember 2005 12:44
von BartSimpson
kannst ja mal statt loclahost die lokale IP adresse versuchen. Aber nicht die 127.0.0.1 sondern die richtige:)

Verfasst: 14. Dezember 2005 14:30
von [ToTTo]
Nein funktioniert auch nicht.

Noch jemand eine Idee?

Irgendwie bekomme ich hier nie nen Tipp der funktioniert :-(

Verfasst: 14. Dezember 2005 14:44
von macman
Ist ja auch raten ins Blaue. Mach ein kleines Projekt, stell es hier rein, und dann kann jeder der auch einen MySQL-Server auf seinem Rechner laufen hat, es auf seinem Rechner testen.

Verfasst: 14. Dezember 2005 14:50
von BartSimpson
dann kannste mal mit telnet localhost 3306 schauen, ob eine verbindung überhaupt möglich ist

Verfasst: 14. Dezember 2005 14:55
von [ToTTo]
Das ist ein QT Problem unter Windoof.

Ich muss die MYSQL dll neu machen.
Hab einfach mal qmake -o Makefile sql.pro und dann nmake gemacht hilft aber leider nix.

Verfasst: 14. Dezember 2005 15:15
von BartSimpson
nächtes mal solltes du schreiben, das du den ms compiler benutzt!!

Verfasst: 14. Dezember 2005 15:18
von [ToTTo]
ok.

und nu?

kann mir vielleicht jemand funktionierende dateien schicken oder mal schnell nen link machen wo ich mir die ziehen kann?

Verfasst: 14. Dezember 2005 15:32
von BartSimpson
du brauchst nicht die dll neu machen nur das Plugin.
Dazu must benötigts du die mysql includes und die mysqlclient.lib, welche sich im mysql packet befinden. dann solle es gehen wie in der Doku beschrieben:
cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake