Supabase Migrations : Gérer l’Évolution de son Schéma de Base de Données

Gérer l’évolution d’une base de données en production est l’un des défis majeurs du développement. Supabase propose un système de migrations intégré via la CLI qui permet de versionner, appliquer et rollback les changements de schéma de manière sécurisée.

Pour une vue d’ensemble de Supabase, lis notre guide complet Supabase. Pour bien structurer ta base avant les migrations, consulte créer et structurer sa base de données Supabase. Pour travailler en local, voir installer Supabase en local avec Docker. Pour les triggers dans tes migrations, voir SQL, triggers et fonctions Supabase.

Pourquoi les Migrations sont Essentielles

  • Schémas cohérents entre dev/staging/prod
  • Rollback possible en cas de bug
  • Pas de conflits en équipe
  • Historique complet des changements

Créer une Migration

# Créer une migration vide
supabase migration new add_posts_table

# Générer depuis les différences locales
supabase db diff --schema public -f add_posts_table

Appliquer les Migrations

# En local
supabase db reset

# En production
supabase db push

# Voir le statut
supabase migration list

Workflow Recommandé

# 1. Démarrer l'environnement local
supabase start

# 2. Modifier le schéma dans Supabase Studio local

# 3. Générer la migration
supabase db diff --schema public -f ma_migration

# 4. Tester en local
supabase db reset

# 5. Déployer en production
supabase db push

Intégration CI/CD avec GitHub Actions

- name: Deploy migrations
  run: supabase db push --project-ref ${{ secrets.SUPABASE_PROJECT_REF }}
  env:
    SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}

Bonnes Pratiques de Migration

  • ✅ Une migration = un changement logique
  • ✅ Toujours tester en local avant production
  • ✅ Nommage descriptif : add_user_roles, pas migration_3
  • ❌ Ne jamais modifier une migration déjà appliquée en production

👉 Articles du guide Supabase

Cet article fait partie du Guide Complet Supabase 2026. Retrouvez les autres articles :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *