Learn Rust Coding · Leçon

Migrations

Faire évoluer le schéma

Leçon 4 sur 413 étapes

Migrations est une leçon Learn Rust Coding gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn Rust Coding, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn Rust Coding comprend 4 leçons au total.

Pourquoi utiliser des migrations ?

Une migration est une modification versionnée du schéma de votre base de données, comme l’ajout d’une table ou d’une colonne. Elle permet au schéma d’évoluer de manière sûre et reproductible.

  • Suivies dans le contrôle de version
  • Appliquées dans l’ordre, exactement une fois

L’outil sqlx-cli

sqlx fournit une CLI pour gérer les migrations. Installez-la une seule fois avec cargo.

cargo install sqlx-cli --no-default-features --features postgres

Créer une migration

sqlx migrate add crée un fichier SQL horodaté dans le dossier migrations/. L’horodatage définit l’ordre.

sqlx migrate add create_users

Écrire le SQL d’une migration

Chaque fichier de migration contient le SQL nécessaire pour faire évoluer le schéma. Limitez chaque fichier à une seule modification logique.

CREATE TABLE users (
    id   SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    email TEXT
);

Exécuter les migrations

sqlx migrate run applique toutes les migrations en attente sur DATABASE_URL et enregistre chacune d’elles dans une table de suivi.

sqlx migrate run

La table de suivi

sqlx enregistre les migrations appliquées dans _sqlx_migrations, en stockant la version et une somme de contrôle afin de ne jamais en réappliquer une ni en modifier une silencieusement.

Migrations réversibles

Ajoutez l’option -r pour créer des fichiers séparés de montée et de descente, afin de pouvoir annuler la migration. sqlx migrate revert exécute le dernier fichier de descente.

sqlx migrate add -r create_posts

Modélisation du suivi des migrations

Un exécuteur de migrations applique uniquement les versions plus récentes que la dernière version appliquée. Cet exemple exécutable modélise cette décision.

fn pending(all: &[u32], applied: u32) -> Vec<u32> {
    all.iter().cloned().filter(|v| *v > applied).collect()
}

fn main() {
    let migrations = [1, 2, 3, 4];
    let last_applied = 2;
    println!("{:?}", pending(&migrations, last_applied));
}

Intégrer les migrations au binaire

La macro migrate! intègre le dossier des migrations dans votre binaire afin que l’application puisse les appliquer au démarrage, sans CLI nécessaire en production.

use sqlx::{Pool, Postgres};

async fn migrate(pool: &Pool<Postgres>) {
    sqlx::migrate!("./migrations")
        .run(pool)
        .await
        .unwrap();
}

Sommes de contrôle et immutabilité

Ne modifiez jamais une migration déjà exécutée. sqlx stocke une somme de contrôle et refuse de continuer si le contenu d’une ancienne migration a changé. Ajoutez plutôt une nouvelle migration.

SQL idempotent

Protégez les instructions avec IF NOT EXISTS afin qu’une nouvelle exécution dans un environnement vierge reste sûre et prévisible.

CREATE TABLE IF NOT EXISTS tags (
    id   SERIAL PRIMARY KEY,
    name TEXT NOT NULL UNIQUE
);

Vérification rapide

Testez votre compréhension des migrations.

Récapitulatif

Vous avez appris les migrations de schéma :

  • Les migrations sont des modifications du schéma ordonnées et versionnées
  • sqlx migrate add/run/revert permet de les gérer
  • Les versions appliquées et les sommes de contrôle sont stockées dans _sqlx_migrations
  • migrate! les intègre pour les appliquer au démarrage
  • Ne modifiez jamais une migration appliquée ; ajoutez-en une nouvelle

Le cours sur sqlx est terminé.

Gratuit pour commencer

Apprends Rust avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
39
Leçons
144

Questions Fréquemment Posées

La leçon « Migrations » est-elle gratuite ?

Oui — le texte complet de « Migrations » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn Rust Coding, passe à CoddyKit PRO. Le cours Learn Rust Coding comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Migrations » ?

Faire évoluer le schéma Tu pratiques Learn Rust Coding avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn Rust Coding ?

Aucune expérience préalable n'est requise. Learn Rust Coding sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Migrations » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn Rust Coding ?

Oui. Chaque leçon Learn Rust Coding inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Connexion à une base de données
  2. Requêtes vérifiées à la compilation
  3. Opérations CRUD
  4. Migrations
← Retour à Learn Rust Coding