Chapitre 6 : Comparaison et Synchronisation de Schéma
Info : Ce chapitre explique la détection des dérives de schéma entre deux bases de données, la matrice visuelle différentielle et les mécanismes de sauvegarde et de rollback.
Dans ce chapitre :
- 6.1 Identifier les écarts de schéma
- 6.2 Matrice visuelle différentielle
- 6.3 Mécanismes de sécurité et garde-fous
- Sujets connexes
6.1 Identifier les écarts de schéma
Au cours du cycle de développement, la structure des bases de pré-production et de production tend à diverger (Schema Drift). SQLOZ repère les écarts et sécurise la phase d’alignement :
- Ouvrez le menu supérieur Outils → Comparer les schémas….
- Source : La base de référence (ex.
local_dev). - Cible (Target) : La base de données à actualiser (ex.
production_db). - Cliquez sur Comparer.
6.2 Matrice visuelle différentielle
Les disparités sont présentées dans un tableau comparatif avec code couleur :
| Couleur | Signification | Instruction générée |
|---|---|---|
| 🟢 Vert | Présent dans la source, absent de la cible | CREATE TABLE / ADD COLUMN |
| 🟡 Jaune | Présent dans les deux mais type ou index divergent | ALTER TABLE |
| 🔴 Rouge | Supprimé de la source mais persistant sur la cible | DROP |
Exemple concret :
SOURCE (local_dev) | CIBLE (prod_db) | ACTION APPLICABLE
payments | ❌ (absent) | ➕ CREATE TABLE payments
users.phone_verified (BOOLEAN) | users.phone_verified (TINYINT) | 🔄 MODIFY COLUMN
6.3 Mécanismes de sécurité et garde-fous
Avant d’exécuter Appliquer la synchronisation, SQLOZ déploie des protections strictes :
- Sauvegarde automatique de table (
_sqloz_bak_...) : Disponible pour MySQL/MariaDB. Avant d’exécuter des requêtes DDL destructives (DROP TABLE,DROP COLUMN,MODIFY COLUMN), le contenu de la table cible est cloné dans une table horodatée :CREATE TABLE IF NOT EXISTS `_sqloz_bak_<timestamp>_users` AS SELECT * FROM `users`; - Script de rollback et de restauration (MySQL/MariaDB) : Lorsqu’un backup a été opéré, SQLOZ émet le script SQL de retour arrière ainsi que les instructions nécessaires pour réinjecter les données :
-- INSERT IGNORE INTO `users` SELECT * FROM `_sqloz_bak_<timestamp>_users`; - Protection contre la suppression destructrice : Toute suppression de table ou colonne en production requiert une confirmation manuelle préalable.
Avertissement : Pour les moteurs PostgreSQL ou SQLite, aucune sauvegarde automatique de table n’est exécutée en arrière-plan. Effectuez systématiquement un dump manuel certifié avant d’appliquer des changements de schéma sur ces environnements.
