[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdepim] akonadiconsole: Make akonadiconsole usable (without a restart) if the akonadi server was re
From:       Andras Mantia <amantia () kde ! org>
Date:       2013-11-15 20:09:48
Message-ID: E1VhPi8-0002Q8-98 () scm ! kde ! org
[Download RAW message or body]

Git commit 20235d3e697163ffb3c4f70e2a3e04796c9cdb7c by Andras Mantia.
Committed on 15/11/2013 at 20:06.
Pushed by amantia into branch 'master'.

Make akonadiconsole usable (without a restart) if the akonadi server was restarted behind the scenes.

M  +13   -1    akonadiconsole/dbaccess.cpp

http://commits.kde.org/kdepim/20235d3e697163ffb3c4f70e2a3e04796c9cdb7c

diff --git a/akonadiconsole/dbaccess.cpp b/akonadiconsole/dbaccess.cpp
index a7371e9..4f7f310 100644
--- a/akonadiconsole/dbaccess.cpp
+++ b/akonadiconsole/dbaccess.cpp
@@ -25,6 +25,7 @@
 #include <QSettings>
 #include <QSqlDatabase>
 #include <QSqlError>
+#include <QSqlQuery>
 
 #include <KGlobal>
 #include <KLocale>
@@ -37,6 +38,11 @@ class DbAccessPrivate
   public:
     DbAccessPrivate()
     {
+      init();
+    }
+
+    void init()
+    {
       const QString serverConfigFile = saveDir( "config" ) + QLatin1String("/akonadiserverrc");
       QSettings settings( serverConfigFile, QSettings::IniFormat );
 
@@ -67,8 +73,14 @@ class DbAccessPrivate
 };
 
 K_GLOBAL_STATIC( DbAccessPrivate, sInstance )
-
 QSqlDatabase DbAccess::database()
 {
+  //hack to detect mysql gone away error
+  QSqlQuery query( QLatin1String("SELECT * FROM schemaversiontable") );
+  if ( !query.exec() && query.lastError().text().contains( "MySQL server has gone away" ) ) {
+    sInstance->database.close();
+    QSqlDatabase::removeDatabase(sInstance->database.connectionName());
+    sInstance->init();
+  }
   return sInstance->database;
 }
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic