Dans un post récent, je vous ai présenté le Projet Mangos, projet qui permet de mettre en oeuvre un serveur WOW local. En regardant les requêtes qui ont amené des visiteurs sur ce site (ce que je ferai plus souvent), je me suis rendu compte de beaucoup cherchaient comment mettre à jour les bases SQL.
Lorsque j’ai écrit le précédent article, je voulais l’agrémenter de quelques bons principes. je vais profiter de ce post pour vous les soumettre.
Un brin d’organisation
S’il est un élément pas évident à suivre, ce sont les numéros de version. J’ai choisi pour ma part de clairement les nommer dans mon répertoire mangos. J’ai deux dossiers: un "current" qui est la version de mangos en exploitation et correspondant aux bases de données et un répertoire "Next" de travail pour préparer la mise à jour. Dans le répertoire "Current", en plus des fichiers et dossiers classiques de mangos, je stocke un répertoire nommant chaque élément et sa version. Voici une copie de mes répertoires :
Vous remarquerez les répertoires en vert, sources des imports de tortoiseSVN. En cas de doute sur la version extraite d’un SVN, il suffit de cliquer droit sur le répertoire > Propriétés > Subversion :
Mettre à jour Mangos
Concernant Mangos, rien de bien compliqué, il suffit de compiler Mangos puis ScriptDev comme la première fois. Donc, on copie les exe et dll dans le nouveau répertoire Next en y ajoutant les dossiers indiquant les nouvelles versions. Il ne faut pas oublier non plus d’y préparer une copie des fichiers conf.
Les répertoires "maps", etc… ne sont à refaire que si WoW lui-même est patché. En effet, le contenu de WoW ne change que lors des patches.
Mettre à jour les bases
C’est généralement la partie la plus stressante parce que c’est là qu’on risque de ne plus faire marcher correctement le bouzin. Il suffit de répérer celles dont on a besoin en fonction des numéros de version et de le faire dans l’ordre de la compilation et des ajouts que l’on a fait. D’abord mangos, puis SD2, puis Acid, puis UDB et enfin, UDB-fr. Si un des projet n’a pas eu de mises à jour, on s’en moque, on passe au suivant sauf alerte bien explicite dans les changelogs (je ne l’ai pas dit, mais, il faut les lire quand même hein !!!)
Si on prend donc l’exemple affiché sur l’image ci-dessus, Mangos exécuté est à la version 6386. A l’heure où j’écris ces lignes, Mangos est à la version 6420. Il faut donc regarder dans le répertoire \Mangos-sources\sql\updates pour trouver celles dont on a besoin (je les ai sélectionnée) :
La 6381 a déjà été appliquée puisque je suis en 6386. Il faudra donc lancer, avec SQLyog chaque mise à jour sur la base qui lui correspond. Le nommage est ainsi:
VersionSVN_BaseAffectée_TableAffectée.sql
Vous comprendrez l’interet de suivre les mises à jours fréquemment. Mais n’oubliez surtout pas qu’il faut limiter les mises à jour à la version de mangos en exécution.
C’est pourquoi j’ai un répertoire "Next". J’y prépare tout compilation + Conf et dans chaque répertoire utilisé pour noter les versions, je copie les scripts SQL concernés. Ainsi, je coupe mangos (ne pas faire de MAJ Sql si le serveur tourne hein !!!), je remplace les fichiers, je lance les différentes scripts et je relance.
ScriptDev, Acid, UDB et consors fonctionnent au niveau de SQL et des MAJ sur le même principe.
Bon patchage ! N’oubliez pas de le faire souvent et n’hésitez pas à poser des commentaires si vous avez des questions ou des demandes d’aide.