AXOPEN

Comment comparer 2 schemas Mysql ?

Qui n’a jamais eu le besoin de comparer 2 schemas de base de données Mysql après avoir oublier de noter l’ensemble des modifications apportées à un environnement ?

Outil gratuit pour comparer 2 schemas Mysql

Pour comparer 2 schemas Mysql, beaucoup d’outils plus ou moins évolués existent sur Internet. Parmi eux, j’ai pu tester un outil très simple nommé mysqldiff et disponible gratuitement.

L’avantage de cet outil est qu’il est codé en PHP: il ne nécessite donc pas à ce titre d’installation. Il faut donc uniquement dé-zipper la version récupérée sur votre EasyPHP ou WAMP local ou bien dans le www de votre serveur de test ou de recette sur lequel se trouve votre base de données.

Comparer 2 schemas Mysql : configurer l’outil

Après avoir sélectionné le langage, vous devez alors configurer la source de données :

Malheureusement, la dernière version (1.5.0) comprend des fonctions deprecated, il est donc nécessaire de corriger la classe library/database.lib.php aux lignes suivantes :

-> ligne 73 : Enlever le trim autour de la variable $this->_con

-> ligne 190 : Remplacer la fonction mysql_list_dbs($this->_con) par mysql_query(« SHOW DATABASES », $this->_con)

-> ligne 234 : Remplacer la colonne Type par Engine (version récente de MySql)

-> ligne 300 : Remplacer la colonne Type par Engine

-> ligne 326 : Remplacer la colonne Type par Engine

Vous devez alors obtenir un écran permettant de sélectionner la base source : (la plus ancienne)

base-source-schemas-mysql

Une fois la base source sélectionnée, vous pouvez alors choisir la base cible : (la plus récente qui contient les dernières évolutions)

base-cible-schemas-mysql

Vous pouvez alors choisir les options :

reglage-diff-schemas-mysql

Ainsi par défaut, l’auto-increment des tables n’est pas pris en compte pour éviter les différences dû à l’insertion de données.

Vous obtenez alors un script DDL comprenant l’ensemble des modifications de structure à appliquer pour passer de la table source à cible.

L’option « Créer blocs INSERT- OU REPLACE » vous permet de sélectionner un ensemble de tables pour lesquels le logiciel va comparer les données pour ainsi proposer des scripts INSERT / REPLACE.

Il faut donc sélectionner uniquement les tables référentiel :

choix-tables-schemas-mysql