Seite 1 von 1

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

Verfasst: 20. Juni 2011 09:42
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?

Verfasst: 21. Juni 2011 09:52
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.