QSqlDatabase::open() unter OS X gibt immer true zurück

Alles rund um die Programmierung mit Qt
Antworten
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

QSqlDatabase::open() unter OS X gibt immer true zurück

Beitrag von gboelter »

Hallo!

Hatte von Euch schon mal jemand das Problem, das sowohl QSqlDatabase::open() wie auch QSqlDatabase::isOpen() unter Mac OS X 10.7 bei einer MySQL Datenbank immer 'true' zurueck gibt? Und zwar selbst dann, wenn ich ueberhaupt keine Parameter fuer Server, User etc. uebergebe ... :(

Zum Testen habe ich jetzt einfach mal den Code aus der QSqlDatabase Class Reference genommen, also

Code: Alles auswählen

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("acidalia");
db.setDatabaseName("customdb");
db.setUserName("mojito");
db.setPassword("J0a1m8");
bool ok = db.open();
Unter Linux und Windows klappt es mit exect dem selben Code einwandfrei, nur eben unter OS X nicht, denn da kommt ein true zurueck!.

Getestet habe ich unter 4.7.3 und mittlerweile drei verschiedenen Versionen von MySQL. Die MySQL-Installation stammt jeweils von MySQL direkt.

Uebersehe ich das was, oder ist das ein Bug?
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

Eine kurze Ergaenzung falls von Euch mal jemand das gleiche Problem hat.

Wenn unter Mac OS X im folgenden Code das Passwort leer ist, dann gibt ein

Code: Alles auswählen

dbtest2.isOpen(); 
ein 'true' zurueck, und zwar selbst dann, wenn es unter der eingegebenen Adresse ueberhaupt keinen SQL-Server gibt.

Code: Alles auswählen

if ( ! QSqlDatabase::contains ( "test2" ) )
    dbtest2 = QSqlDatabase::addDatabase( "QMYSQL", "test2" );

    dbtest2.setHostName( "192.168.1.100");
    dbtest2.setDatabaseName( "mysql" );
    dbtest2.setUserName( "root" );
    dbtest2.setPassword( "" );
    dbtest2.setPort( 3306 );
Das passiert nur unter OS X, unter Windows und Linux gibt dieses Problem zumindest bei mir nicht.
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
Antworten