Registrar a evolução do banco
Migration é uma alteração do banco descrita em um arquivo que pode ser versionado e executado por uma ferramenta. Ela pode criar uma tabela, acrescentar uma coluna ou modificar uma restrição. Algumas migrations também transformam registros para acompanhar a evolução da estrutura.
O projeto mantém uma sequência dessas alterações, e a ferramenta registra quais já foram aplicadas em cada ambiente. Quando você recebe o código, pode executar as etapas pendentes sem reproduzir manualmente cada ajuste. O resultado ainda depende das condições do banco e de eventuais alterações feitas fora desse histórico.
Imagine uma atualização que acrescenta a data de nascimento ao cadastro. A migration cria a coluna, e a nova versão da aplicação lê e escreve esse campo. As duas mudanças precisam ser coordenadas para que o código publicado encontre a estrutura esperada.
Uma alteração com efeito definido
ALTER TABLE contatos
ADD COLUMN data_nascimento DATE;O comando pressupõe a existência da tabela e a ausência da coluna. Uma ferramenta de migrations pode executar esse SQL diretamente ou produzir uma instrução equivalente a partir da linguagem do framework. O arquivo e o registro de execução acrescentam organização à alteração.
A coluna do exemplo permite nulo, o que acomoda cadastros anteriores sem data informada. Torná-la obrigatória exigiria considerar os valores existentes. Criar uma exigência que nenhuma linha antiga atende pode fazer a execução falhar.
Aplicar em um banco existente é um teste próprio
Executar toda a sequência em um banco vazio confere a instalação inicial. Atualizar um banco já utilizado confere outra situação, com registros e restrições existentes. As duas verificações podem encontrar falhas diferentes.
Considere também o intervalo entre a alteração do banco e a atualização de todos os processos. Se a versão anterior ainda atender requisições, teste seu comportamento com a nova estrutura. O teste da versão nova, sozinho, não cobre essa convivência temporária.
O tempo de execução e a interferência em consultas também dependem do banco, do volume e da operação. Uma alteração rápida em poucas linhas pode exigir mais trabalho em uma tabela grande. Consulte o comportamento do comando no banco utilizado e prepare o procedimento de aplicação.
Reversão não recupera conteúdo automaticamente
Uma migration pode oferecer uma operação inversa, mas desfazer a estrutura não equivale a recuperar tudo. Remover uma coluna elimina seus valores, e recriá-la depois não os restaura. Backup e procedimentos de recuperação têm uma finalidade distinta.
Também é preciso coordenar a versão da aplicação. Voltar o banco a uma estrutura que o código atual não reconhece pode impedir o funcionamento. Uma migration corretiva pode preservar os valores da coluna que uma inversão destrutiva apagaria.
Como conferir o histórico
Compare migrations aplicadas, estrutura real e versão do código. Teste a instalação inicial e a atualização de um conjunto representativo em desenvolvimento. Não altere silenciosamente uma migration já compartilhada esperando que todos os ambientes a executem novamente.
O verbete de seed explica como preparar registros de partida depois que a estrutura necessária está disponível.
Dúvidas frequentes
Perguntas frequentes sobre Migration
- Migration altera apenas a estrutura?
- Muitas migrations alteram tabelas e restrições, mas também podem transformar registros. O arquivo deve deixar explícito o efeito pretendido e suas condições de execução.
- Aplicar em um banco vazio basta para testar?
- A instalação inicial não cobre todas as condições de um banco já utilizado. Teste também a atualização com registros representativos e restrições existentes.
- Reverter uma migration recupera valores removidos?
- Recriar uma coluna não recupera automaticamente seu conteúdo anterior. Alterações destrutivas exigem procedimentos próprios de recuperação.
- Posso editar uma migration já aplicada para corrigir todos os ambientes?
- A ferramenta pode considerá-la concluída e não executá-la novamente. Uma mudança compartilhada normalmente precisa de uma nova etapa que mantenha o histórico coerente.
Para continuar
Recursos relacionados
Documentação
Migrations na documentação do Laravel
Apresenta arquivos de evolução do banco, execução e reversão de migrations.
Abrir recursoSite de referência
Desenvolvimento Colaborativo da Dev Side Studio
Conheça o acompanhamento técnico ao vivo para revisar as alterações do banco e conferir o comportamento da aplicação.
Abrir recursoAplicação na formação
Formação DevOps
Migrations registram alterações do banco que precisam ser aplicadas de forma coordenada nos ambientes do projeto.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.