From 70b518e839ce215db0cc70e57aaca3e4dd8aaf3e Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 18 Jan 2022 11:28:38 +0100 Subject: [PATCH] try to fix mariadb encoding problem --- src/librssguard/database/mariadbdriver.cpp | 11 +++++++++++ src/librssguard/database/mariadbdriver.h | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/librssguard/database/mariadbdriver.cpp b/src/librssguard/database/mariadbdriver.cpp index 77ee7fae1..777847ec1 100644 --- a/src/librssguard/database/mariadbdriver.cpp +++ b/src/librssguard/database/mariadbdriver.cpp @@ -162,6 +162,7 @@ QSqlDatabase MariaDbDriver::initializeDatabase(const QString& connection_name) { QSqlQuery query_db(database); query_db.setForwardOnly(true); + setPragmas(query_db); if (!query_db.exec(QSL("USE %1").arg(database_name)) || !query_db.exec(QSL("SELECT inf_value FROM Information WHERE inf_key = 'schema_version'"))) { @@ -214,6 +215,11 @@ QSqlDatabase MariaDbDriver::initializeDatabase(const QString& connection_name) { return database; } +void MariaDbDriver::setPragmas(QSqlQuery& query) { + query.exec(QSL("SET NAMES 'utf8mb4';")); + query.exec(QSL("SET CHARACTER SET utf8mb4;")); +} + bool MariaDbDriver::updateDatabaseSchema(QSqlQuery& query, const QString& source_db_schema_version, const QString& database_name) { @@ -295,6 +301,11 @@ QSqlDatabase MariaDbDriver::connection(const QString& connection_name, DatabaseD << "seems to be established."; } + QSqlQuery query_db(database); + + query_db.setForwardOnly(true); + setPragmas(query_db); + return database; } } diff --git a/src/librssguard/database/mariadbdriver.h b/src/librssguard/database/mariadbdriver.h index 86d55a057..102eec74b 100644 --- a/src/librssguard/database/mariadbdriver.h +++ b/src/librssguard/database/mariadbdriver.h @@ -42,11 +42,13 @@ class MariaDbDriver : public DatabaseDriver { QString interpretErrorCode(MariaDbError error_code) const; private: - bool updateDatabaseSchema(QSqlQuery &query, + bool updateDatabaseSchema(QSqlQuery& query, const QString& source_db_schema_version, const QString& database_name); QSqlDatabase initializeDatabase(const QString& connection_name); + void setPragmas(QSqlQuery& query); + private: bool m_databaseInitialized; };