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 re= started 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 #include #include +#include = #include #include @@ -37,6 +38,11 @@ class DbAccessPrivate public: DbAccessPrivate() { + init(); + } + + void init() + { const QString serverConfigFile =3D saveDir( "config" ) + QLatin1Stri= ng("/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 h= as gone away" ) ) { + sInstance->database.close(); + QSqlDatabase::removeDatabase(sInstance->database.connectionName()); + sInstance->init(); + } return sInstance->database; }