From 98be85fa149e12609f41226952549ef444698634 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 15 Mar 2021 13:58:26 +0100 Subject: [PATCH] support mysql -> sqlite fallback --- src/librssguard/database/databasefactory.cpp | 13 ++++++------- src/librssguard/database/mariadbdriver.cpp | 8 ++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/librssguard/database/databasefactory.cpp b/src/librssguard/database/databasefactory.cpp index 3275ee93c..3d358606a 100644 --- a/src/librssguard/database/databasefactory.cpp +++ b/src/librssguard/database/databasefactory.cpp @@ -52,15 +52,14 @@ void DatabaseFactory::determineDriver() { } catch (const ApplicationException& ex) { qCriticalNN << LOGSEC_DB - << "Failed to reach connection to DB source, will fallback to SQLite:" + << "Failed to reach connection to DB source, let's fallback to SQLite:" << QUOTE_W_SPACE_DOT(ex.message()); - qApp->showGuiMessage(tr("Cannot connect to database"), - tr("Connection to your database was not established with error '%1'. " - "Falling back to SQLite.").arg(ex.message()), - QSystemTrayIcon::MessageIcon::Critical, - nullptr, - true); + MessageBox::show(nullptr, + QMessageBox::Icon::Critical, + tr("Cannot connect to database"), + tr("Connection to your database was not established with error: '%1'. " + "Falling back to SQLite.").arg(ex.message())); m_dbDriver = boolinq::from(m_allDbDrivers).first([](DatabaseDriver* driv) { return driv->driverType() == DatabaseDriver::DriverType::SQLite; diff --git a/src/librssguard/database/mariadbdriver.cpp b/src/librssguard/database/mariadbdriver.cpp index 4b0ae3a6e..0bc4e43d3 100755 --- a/src/librssguard/database/mariadbdriver.cpp +++ b/src/librssguard/database/mariadbdriver.cpp @@ -150,8 +150,8 @@ QSqlDatabase MariaDbDriver::initializeDatabase(const QString& connection_name) { database.setPassword(qApp->settings()->password(GROUP(Database), SETTING(Database::MySQLPassword)).toString()); if (!database.open()) { - qFatal("Cannot open MySQL database: %s. Make sure your DB server is running and " - "start application again.", qPrintable(database.lastError().text())); + // NOTE: In this case throw exception and fallback SQL backend will be used. + throw ApplicationException(database.lastError().text()); } else { QSqlQuery query_db(database); @@ -279,8 +279,8 @@ QSqlDatabase MariaDbDriver::connection(const QString& connection_name, DatabaseD } if (!database.isOpen() && !database.open()) { - qFatal("MySQL database was NOT opened. Delivered error message: '%s'.", - qPrintable(database.lastError().text())); + // NOTE: In this case throw exception and fallback SQL backend will be used. + throw ApplicationException(database.lastError().text()); } else { qDebugNN << LOGSEC_DB