Core/DBLayer: Terminate process if table/database structure is not compatible with the core. This will significantly reduce the amount of PEBCAK help and support threads on our forums.
Also added a 10 second window to WPFatal for users who never heard of command line before to read the error prior to process termination.
This commit is contained in:
@@ -527,7 +527,12 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo)
|
||||
// Query related errors - skip query
|
||||
case 1058: // "Column count doesn't match value count"
|
||||
case 1062: // "Duplicate entry '%s' for key '%d'"
|
||||
case 1054: // "Unknown column '%s' in 'order clause'"
|
||||
return false;
|
||||
|
||||
// Outdated table or database structure - terminate core
|
||||
case 1054: // "Unknown column '%s' in '%s'"
|
||||
case 1146: // "Table '%s' doesn't exist"
|
||||
WPFatal(!errNo, "Your database structure is not up to date. Please make sure you've executed all queries in the sql/updates folders.");
|
||||
return false;
|
||||
|
||||
default:
|
||||
|
||||
@@ -22,11 +22,12 @@
|
||||
#include "Common.h"
|
||||
#include "Log.h"
|
||||
#include <ace/Stack_Trace.h>
|
||||
#include <ace/OS_NS_unistd.h>
|
||||
|
||||
#define WPAssert( assertion ) { if (!(assertion)) { ACE_Stack_Trace st; sLog->outError( "\n%s:%i in %s ASSERTION FAILED:\n %s\n%s\n", __FILE__, __LINE__, __FUNCTION__, #assertion, st.c_str()); assert( #assertion &&0 ); ((void(*)())NULL)();} }
|
||||
#define WPError( assertion, errmsg ) if ( ! (assertion) ) { sLog->outError( "%\n%s:%i in %s ERROR:\n %s\n", __FILE__, __LINE__, __FUNCTION__, (char *)errmsg ); assert( false ); }
|
||||
#define WPWarning( assertion, errmsg ) if ( ! (assertion) ) { sLog->outError( "\n%s:%i in %s WARNING:\n %s\n", __FILE__, __LINE__, __FUNCTION__, (char *)errmsg ); }
|
||||
#define WPFatal( assertion, errmsg ) if ( ! (assertion) ) { sLog->outError( "\n%s:%i in %s FATAL ERROR:\n %s\n", __FILE__, __LINE__, __FUNCTION__, (char *)errmsg ); assert( #assertion &&0 ); abort(); }
|
||||
#define WPFatal( assertion, errmsg ) if ( ! (assertion) ) { sLog->outError( "\n%s:%i in %s FATAL ERROR:\n %s\n", __FILE__, __LINE__, __FUNCTION__, (char *)errmsg ); ACE_OS::sleep(10); assert( #assertion &&0 ); abort(); }
|
||||
|
||||
#define ASSERT WPAssert
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user