[9906] More user friendly output at DB version check fail.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
Patman128 2010-05-16 03:01:54 +04:00 committed by VladimirMangos
parent c018563669
commit 2ee1bb5219
3 changed files with 71 additions and 16 deletions

View file

@ -5,17 +5,23 @@ Copyright (c) 2005-2010 MaNGOS <http://getmangos.com/>
See the COPYING file for copying conditions.
== Database Updates ==
This folder contains SQL files which will apply required updates to your MySQL
database, whenever the MaNGOS database structure has been changed or extended.
To see if you need an update, the file names have been given a fixed structure
that should enable you to see if you need an update or not.
=== File name descriptin ===
File names are divided into two parts. First part is the revision+counter
that show commit revision that will be compatible with database after apply update.
Counter set order in sql updates apply for same revision.
The second part of the name of the database and the table that needs and update or has been added.
=== File Name Description ===
File names are divided into two parts.
First part is the revision and counter that shows the commit revision that
will be compatible with the database after apply that particular update.
Counter sets the order to apply sql updates for the same revision.
The second part of the name is the database and the table that needs an update or has been added.
See an example below:
6936_01_mangos_spell_chain.sql
@ -27,18 +33,19 @@ See an example below:
| | Name of affected DB (default recommended name)
| | Can be: characters, mangos, realmd
| |
| Counter show number of sql update in updates list for provided revision
| Counter show number of sql updates in updates list for provided revision
| and set proper order for sql updates for same revision
|
MaNGOS commit revison related to sql update.
MaNGOS commit revision related to sql update.
It included in commit description in form [6936] as you can see at http://github.com/mangos/mangos/commits/master
After appling this update DB compatiable with database that include this sql update.
SQL update include special protection against multiply and wrong order SQL updates apply.
So attempt apply sql update to more old DB without previous SQL update in list for targeted database
or to DB with already applied this or later SQL update will generate error and not applied.
After applying an update the DB is compatible with the mangos revision of this sql update.
SQL updates include special protection against multiple and wrong order of update application.
=== For commiters ====
Attempts to apply sql updates to an older DB without previous SQL updates in list for the database
or to DB with already applied this or later SQL update will generate an error and not be applied.
=== For Commiters ====
MaNGOS sources include special tool ( contrib/git_id ) for generation revision info
in commit notes and in src/shared/revision_nr.h file. It have option '-s' that let set

View file

@ -204,6 +204,18 @@ bool Database::CheckRequiredField( char const* table_name, char const* required_
// check fail, prepare readabale error message
// search current required_* field in DB
const char* db_name;
if(!strcmp(table_name, "db_version"))
db_name = "WORLD";
else if(!strcmp(table_name, "character_db_version"))
db_name = "CHARACTER";
else if(!strcmp(table_name, "realmd_db_version"))
db_name = "REALMD";
else
db_name = "UNKNOWN";
char const* req_sql_update_name = required_name+strlen("required_");
QueryNamedResult* result2 = PQueryNamed("SELECT * FROM %s LIMIT 1",table_name);
if(result2)
{
@ -220,13 +232,49 @@ bool Database::CheckRequiredField( char const* table_name, char const* required_
delete result2;
std::string cur_sql_update_name = reqName.substr(strlen("required_"),reqName.npos);
if(!reqName.empty())
sLog.outErrorDb("Table `%s` have field `%s` but expected `%s`! Not all sql updates applied?",table_name,reqName.c_str(),required_name);
{
sLog.outErrorDb("The table `%s` in your [%s] database indicates that this database is out of date!",table_name,db_name);
sLog.outErrorDb("");
sLog.outErrorDb(" [A] You have: --> `%s.sql`",cur_sql_update_name.c_str());
sLog.outErrorDb("");
sLog.outErrorDb(" [B] You need: --> `%s.sql`",req_sql_update_name);
sLog.outErrorDb("");
sLog.outErrorDb("You must apply all updates after [A] to [B] to use mangos with this database.");
sLog.outErrorDb("These updates are included in the sql/updates folder.");
sLog.outErrorDb("Please read the included [README] in sql/updates for instructions on updating.");
}
else
sLog.outErrorDb("Table `%s` not have required_* field but expected `%s`! Not all sql updates applied?",table_name,required_name);
{
sLog.outErrorDb("The table `%s` in your [%s] database is missing its version info.",table_name,db_name);
sLog.outErrorDb("MaNGOS cannot find the version info needed to check that the db is up to date.",table_name,db_name);
sLog.outErrorDb("");
sLog.outErrorDb("This revision of MaNGOS requires a database updated to:");
sLog.outErrorDb("`%s.sql`",req_sql_update_name);
sLog.outErrorDb("");
if(!strcmp(db_name, "WORLD"))
sLog.outErrorDb("Post this error to your database provider forum or find a solution there.");
else
sLog.outErrorDb("Reinstall your [%s] database with the included sql file in the sql folder.",db_name);
}
}
else
sLog.outErrorDb("Table `%s` fields list query fail but expected have `%s`! No records in `%s`?",table_name,required_name,table_name);
{
sLog.outErrorDb("The table `%s` in your [%s] database is missing or corrupt.",table_name,db_name);
sLog.outErrorDb("MaNGOS cannot find the version info needed to check that the db is up to date.",table_name,db_name);
sLog.outErrorDb("");
sLog.outErrorDb("This revision of mangos requires a database updated to:");
sLog.outErrorDb("`%s.sql`",req_sql_update_name);
sLog.outErrorDb("");
if(!strcmp(db_name, "WORLD"))
sLog.outErrorDb("Post this error to your database provider forum or find a solution there.");
else
sLog.outErrorDb("Reinstall your [%s] database with the included sql file in the sql folder.",db_name);
}
return false;
}

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "9905"
#define REVISION_NR "9906"
#endif // __REVISION_NR_H__