From e2a8dfffbec626186f6b93894aec1353774ed99b Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sun, 19 Dec 2010 15:48:55 +0100 Subject: Core/DBLayer: - Add generic HandleMySQLErrno() method. - Add the ability to re-execute a certain statement if errorhandler resolved the situation succesfuly. - Add support for MySQL errno´s 2006, 2013, 2048, 2055 - fixes automatic reconnection behaviour. - Cleanup in affected code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NOTE: You should still be smart enough to configure your worldserver and authserver´s MaxPingTime to be lower than your MySQL´s wait_time. --HG-- branch : trunk --- src/server/shared/Database/Implementation/CharacterDatabase.cpp | 4 +++- src/server/shared/Database/Implementation/LoginDatabase.cpp | 3 ++- src/server/shared/Database/Implementation/WorldDatabase.cpp | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src/server/shared/Database/Implementation') diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 5e5ab97e075..af7d7201d4f 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -22,7 +22,9 @@ bool CharacterDatabaseConnection::Open() if (!MySQLConnection::Open()) return false; - m_stmts.resize(MAX_CHARACTERDATABASE_STATEMENTS); + if (!m_reconnecting) + m_stmts.resize(MAX_CHARACTERDATABASE_STATEMENTS); + /* ################################## LOAD YOUR PREPARED STATEMENTS HERE diff --git a/src/server/shared/Database/Implementation/LoginDatabase.cpp b/src/server/shared/Database/Implementation/LoginDatabase.cpp index 33aa650f9d9..794f156a417 100755 --- a/src/server/shared/Database/Implementation/LoginDatabase.cpp +++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp @@ -22,7 +22,8 @@ bool LoginDatabaseConnection::Open() if (!MySQLConnection::Open()) return false; - m_stmts.resize(MAX_LOGINDATABASE_STATEMENTS); + if (!m_reconnecting) + m_stmts.resize(MAX_LOGINDATABASE_STATEMENTS); /* ################################## diff --git a/src/server/shared/Database/Implementation/WorldDatabase.cpp b/src/server/shared/Database/Implementation/WorldDatabase.cpp index 2b83b210bc5..8be56873278 100755 --- a/src/server/shared/Database/Implementation/WorldDatabase.cpp +++ b/src/server/shared/Database/Implementation/WorldDatabase.cpp @@ -22,7 +22,8 @@ bool WorldDatabaseConnection::Open() if (!MySQLConnection::Open()) return false; - m_stmts.resize(MAX_WORLDDATABASE_STATEMENTS); + if (!m_reconnecting) + m_stmts.resize(MAX_WORLDDATABASE_STATEMENTS); /* ################################## -- cgit v1.2.3