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 postgresCriando 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_usersEscrevendo 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 runA 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_postsModelando 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/revertgerencia 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.