Générer un script d’alter pour des évolutions de modèles BDD Mysql

Lors du développement d’un projet, il arrive souvent que l’on ait a effectuer des évolutions du modèle de données. Si l’on travaille sur différents environnements il est indispensable de répercuter les modifications au même rythme que les évolutions de l’application. Pour éviter de créer ces scripts d’alter à la main avec Mysql/MariaDB il existe un petit outil mysqldiff qui simplifie grandement le travail.

Installer mysqldiff sur Ubuntu

L’outil mysqldiff est un script perl disponible dans le module CPAN MySQL::Diff. Il faut avoir les bibliothèques PERL et le paquet cpanm installés. Si ils ne sont pas installés voici la commande :

apt install cpanminus

Ensuite il faut installer le module cpan mysqldiff avec la commande suivante :

cpanm MySQL::Diff

L’outil MysqlDiff est maintenant disponible.

Générer les dumps de base de données

L’outil mysqldiff se base sur les dumps mysql pour générer un script d’alter, il faut donc effectuer des dumps de la base de données contenant uniquement la structure. Pour se faire il faut ajouter le paramètre –no-data à la commande mysqldump :

mysqldump --user=myuser --no-data mydatabase > dumpstrucuture1.sql

Créer le script d’alter

Quand on souhaite créer un script d’alter entre 2 versions d’un modèle de base de données, il suffit de lancer l’outil mysqldiff avec en paramètre la version1 et la version2 du dump :

user:/tmp> mysqldiff dumpddl1.sql dumpddl2.sql
## mysqldiff 0.60
## 
## Run on Tue Mar 23 10:48:28 2021
## Options: debug=0
##
## --- file: dumpddl1.sql
## +++ file: dumpddl2.sql

DROP TABLE account;

ALTER TABLE t_affaire ADD COLUMN utilcreate varchar(50) DEFAULT NULL;

Un certain nombre d’options sont disponibles, à noter qu’il est également possible d’effectuer la génération de ce script d’alter entre 2 bases de données en spécifiant les paramètres de connexion.

Tagged in:, ,

0 Comments

Leave a Reply

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.