0Pricing
Learn Rust Coding · Lección

Migraciones

Evolucionar el esquema

Migraciones es una lección gratuita de Learn Rust Coding en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn Rust Coding, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn Rust Coding incluye 4 lecciones en total.

¿Por qué usar migraciones?

Una migración es un cambio versionado del esquema de la base de datos, como añadir una tabla o una columna. Permite que el esquema evolucione de forma segura y reproducible.

  • Se registran en el control de versiones
  • Se aplican en orden, exactamente una vez

La herramienta sqlx-cli

sqlx incluye una CLI para gestionar migraciones. Instálela una vez con cargo.

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

Crear una migración

sqlx migrate add crea un archivo SQL con marca de tiempo en la carpeta migrations/. La marca de tiempo determina el orden.

sqlx migrate add create_users

Escribir el SQL de una migración

Cada archivo de migración contiene el SQL necesario para hacer avanzar el esquema. Mantenga un único cambio lógico por archivo.

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

Ejecutar migraciones

sqlx migrate run aplica todas las migraciones pendientes contra DATABASE_URL y registra cada una en una tabla de seguimiento.

sqlx migrate run

La tabla de seguimiento

sqlx registra las migraciones aplicadas en _sqlx_migrations y almacena la versión y una suma de comprobación para no volver a aplicarlas ni modificarlas silenciosamente.

Migraciones reversibles

Añada la opción -r para crear archivos up y down separados y poder revertir los cambios. sqlx migrate revert ejecuta el archivo down más reciente.

sqlx migrate add -r create_posts

Modelado del seguimiento de migraciones

Un ejecutor de migraciones aplica únicamente las versiones posteriores a la última versión aplicada. Este ejemplo ejecutable modela esa decisión.

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));
}

Incrustar migraciones en el binario

La macro migrate! incorpora la carpeta de migraciones al binario para que la aplicación pueda aplicarlas al iniciarse, sin necesitar la CLI en producción.

use sqlx::{Pool, Postgres};

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

Sumas de comprobación e inmutabilidad

No edite nunca una migración que ya se haya ejecutado. sqlx almacena una suma de comprobación y se negará a continuar si cambia el contenido de una migración anterior. Añada una migración nueva.

SQL idempotente

Proteja las instrucciones con IF NOT EXISTS para que volver a ejecutarlas en un entorno nuevo sea seguro y predecible.

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

Comprobación rápida

Compruebe su comprensión de las migraciones.

Resumen

Ha aprendido las migraciones de esquemas:

  • Las migraciones son cambios de esquema ordenados y versionados
  • sqlx migrate add/run/revert permite gestionarlas
  • Las versiones aplicadas y las sumas de comprobación se almacenan en _sqlx_migrations
  • migrate! las incorpora para aplicarlas al iniciarse la aplicación
  • No edite nunca una migración aplicada; añada una nueva

Con esto finaliza el curso de sqlx.

Preguntas frecuentes

¿La lección «Migraciones» es gratis?

Sí — el texto completo de «Migraciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn Rust Coding, actualiza a CoddyKit PRO. El curso de Learn Rust Coding incluye 4 lecciones en total.

¿Qué aprenderé en «Migraciones»?

Evolucionar el esquema Practicas Learn Rust Coding con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn Rust Coding?

No se requiere experiencia previa. Learn Rust Coding en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Migraciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn Rust Coding?

Sí. Cada lección de Learn Rust Coding incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conexión a una base de datos
  2. Consultas comprobadas en compilación
  3. Operaciones CRUD
  4. Migraciones
← Volver a Learn Rust Coding