0Pricing
Learn Rust Coding · Aula

Migrações

Evolua o esquema

Migrações é uma aula grátis de Learn Rust Coding no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn Rust Coding, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn Rust Coding inclui 4 aulas no total.

Por que usar migrações?

Uma migração é uma alteração versionada no esquema do banco de dados, como adicionar uma tabela ou coluna. Elas permitem que o esquema evolua de forma segura e reproduzível.

  • Rastreadas no controle de versão
  • Aplicadas em ordem, exatamente uma vez

A ferramenta sqlx-cli

O sqlx inclui uma CLI para gerenciar migrações. Instale-a uma vez com o cargo.

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

Criando uma migração

sqlx migrate add cria um arquivo SQL com marca temporal na pasta migrations/. A marca temporal define a ordem.

sqlx migrate add create_users

Escrevendo o SQL da migração

Cada arquivo de migração contém o SQL necessário para avançar o esquema. Mantenha uma alteração lógica por arquivo.

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

Executando migrações

sqlx migrate run aplica todas as migrações pendentes em DATABASE_URL, registrando cada uma em uma tabela de controle.

sqlx migrate run

A tabela de controle

O sqlx registra as migrações aplicadas em _sqlx_migrations, armazenando a versão e uma soma de verificação para nunca reaplicar nem alterar silenciosamente uma migração.

Migrações reversíveis

Adicione a opção -r para criar arquivos separados de subida e descida, permitindo reverter alterações. sqlx migrate revert executa o arquivo de descida mais recente.

sqlx migrate add -r create_posts

Modelando o controle de migrações

Um executor de migrações aplica somente as versões mais recentes que a última versão aplicada. Este exemplo executável modela essa decisão.

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

Embutindo migrações no binário

A macro migrate! incorpora a pasta de migrações ao binário para que o aplicativo possa aplicá-las na inicialização, sem precisar da CLI em produção.

use sqlx::{Pool, Postgres};

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

Somas de verificação e imutabilidade

Nunca edite uma migração que já tenha sido executada. O sqlx armazena uma soma de verificação e se recusará a continuar se o conteúdo de uma migração anterior tiver mudado. Em vez disso, adicione uma nova migração.

SQL idempotente

Proteja as instruções com IF NOT EXISTS para que executá-las novamente em um ambiente novo seja seguro e previsível.

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

Verificação rápida

Teste sua compreensão das migrações.

Recapitulação

Você aprendeu sobre migrações de esquema:

  • Migrações são alterações ordenadas e versionadas no esquema
  • sqlx migrate add/run/revert gerencia essas alterações
  • As versões aplicadas e as somas de verificação ficam em _sqlx_migrations
  • migrate! incorpora as migrações para aplicação na inicialização
  • Nunca edite uma migração aplicada; adicione uma nova

Isso conclui o curso de sqlx.

Perguntas Frequentes

A aula “Migrações” é grátis?

Sim — o texto completo de “Migrações” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn Rust Coding, atualize para CoddyKit PRO. O curso de Learn Rust Coding inclui 4 aulas no total.

O que vou aprender em “Migrações”?

Evolua o esquema Você pratica Learn Rust Coding com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Learn Rust Coding?

Nenhuma experiência prévia é necessária. Learn Rust Coding no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Migrações”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Learn Rust Coding?

Sim. Cada aula de Learn Rust Coding inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Conexão com um banco de dados
  2. Consultas verificadas em tempo de compilação
  3. Operações CRUD
  4. Migrações
← Voltar para Learn Rust Coding