From d0787745aa43e5baf49de876f917946df6aceca5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 9 Apr 2025 09:54:40 -0700 Subject: [PATCH] QSqlDatabase: make evident the name of the driver that failed to load Tell me this isn't confusing: Got keys from plugin meta data ("QMYSQL3", "QMYSQL", "QMARIADB") QSqlDatabase: driver not loaded QSqlDatabase: available drivers: QSQLITE QMARIADB QMYSQL QMYSQL3 This also merges the two messages into a single line, which is nicer for rich logging environments. Change-Id: Ieb80c6571213dddc518bfffdb6c86632df8f932c Reviewed-by: Christian Ehrlicher (cherry picked from commit 4216ba7c37dbdf67bfb5dc793d01a232ce4ea762) (cherry picked from commit 22dd10e261c1c9ab46a8bfe99f574bae1c6c01e9) Reviewed-by: Qt Cherry-pick Bot --- src/sql/kernel/qsqldatabase.cpp | 6 +++--- tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp | 5 +++-- tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index c25fabf0a4b..1c6d3325107 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -655,9 +655,9 @@ void QSqlDatabasePrivate::init(const QString &type) driver = qLoadPlugin(loader(), type); if (!driver) { - qCWarning(lcSqlDb, "QSqlDatabase: %ls driver not loaded", qUtf16Printable(type)); - qCWarning(lcSqlDb, "QSqlDatabase: available drivers: %ls", - qUtf16Printable(QSqlDatabase::drivers().join(u' '))); + qCWarning(lcSqlDb, + "QSqlDatabase: can not load requested driver '%ls', available drivers: %ls", + qUtf16Printable(type), qUtf16Printable(QSqlDatabase::drivers().join(u' '))); if (QCoreApplication::instance() == nullptr) qCWarning(lcSqlDb, "QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins"); driver = shared_null()->driver; diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index 79fe9d6333b..f4c180b2c1c 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -383,8 +383,9 @@ void tst_QSqlDatabase::generic_data(const QString& engine) void tst_QSqlDatabase::addDatabase() { - QTest::ignoreMessage(QtWarningMsg, "QSqlDatabase: BLAH_FOO_NONEXISTENT_DRIVER driver not loaded"); - QTest::ignoreMessage(QtWarningMsg, qPrintable("QSqlDatabase: available drivers: " + QSqlDatabase::drivers().join(QLatin1Char(' ')))); + QTest::ignoreMessage(QtWarningMsg, + "QSqlDatabase: can not load requested driver 'BLAH_FOO_NONEXISTENT_DRIVER', available drivers: " + + QSqlDatabase::drivers().join(QLatin1Char(' ')).toLatin1()); { QSqlDatabase db = QSqlDatabase::addDatabase("BLAH_FOO_NONEXISTENT_DRIVER", "INVALID_CONNECTION"); diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 4ed8b494615..5b15eb49ff7 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -2908,10 +2908,10 @@ void tst_QSqlQuery::queryOnInvalidDatabase() QSqlDatabase::removeDatabase("invalidConnection"); }); // Note: destruction of db needs to happen before we call removeDatabase. - QTest::ignoreMessage(QtWarningMsg, "QSqlDatabase: INVALID driver not loaded"); #if QT_CONFIG(regularexpression) QTest::ignoreMessage(QtWarningMsg, - QRegularExpression("QSqlDatabase: available drivers: ")); + QRegularExpression("QSqlDatabase: can not load requested driver " + "'INVALID', available drivers: ")); #endif QSqlDatabase db = QSqlDatabase::addDatabase("INVALID", "invalidConnection"); QVERIFY(db.lastError().isValid());