Database Upgrade

When necessary, the database model used by ManaServ will be extended or modified.
To prevent inconsistencies between the database model and the account server, the database model has its own version number which has to match the known version of the account server.

That means, if you upgrade you database model, you also have to update ManaServ and vice versa. If the version of your database is incompatible with you version of the account server, the account server will print out a message like this at startup:

 [FTL] Error opening the database: Database version is not supported. Needed version: '1', current version: '2'

In this case, the version of your database is newer, than the version of the account server. You'll have to get the latest sources of ManaServ.

Determine the database version

To find out which version your current database is of, try the following SELECT statement, which should work well independently of your database backend.

 SELECT value FROM mana_world_states WHERE state_name = 'database_version';

This should give you a numeric value which represents your current database version. When using SQLite, try the following statement:
(In a shell and from the directory where the file mana.db is located.)

 sqlite3 mana.db "SELECT value FROM tmw_world_states WHERE state_name = 'database_version'";

How to upgrade my database

According to your chosen database backend, you will find a subdirectory called “updates” under “manaserv/src/sql/<db_backend>”.
The update scripts follow a naming scheme like “update_<old_version>_to_<new_version>.sql”. So if your current version is “1” and you want to upgrade to “2”, find the script called “update_1_to_2.sql”.

Steps to execute the script depends on your backend. For SQLite just move to the folder where your current database file “mana.db” lies and type:

sqlite3 mana.db < src/sql/sqlite/updates/update_1_to_2.sql

Attention: The scripts don't check what version you are running, so check it before running a script!

 
upgrade_database.txt · Last modified: 2010/04/14 11:56 by Yohann Ferreira
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki