Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Qual é a diferença entre migrar: refrescar e migrar: redefinir em Laravel


Qual é a diferença entre migrar: refrescar e migrar: redefinir em Laravel


Os comandos `Migre: Refresh` e` Migre: Reset` em Laravel estão relacionados ao gerenciamento de migrações de banco de dados, mas servem a propósitos diferentes e se comportam de maneiras distintas durante o gerenciamento de esquema de banco de dados. Compreender suas diferenças é crucial para os desenvolvedores de Laravel lidarem efetivamente com estados de banco de dados durante o desenvolvimento ou implantação.

Migre: Atualizar

O comando `php artesan migre: refresh` é usado para reverter todas as migrações e depois executá -las novamente. Isso significa que ele revira cada migração que foi aplicada (executando o método `Down ()` de cada migração) e, em seguida, executa o método `up ()` `novamente para cada migração para reconstruir o esquema do banco de dados do zero.

- O que faz:
- Rolls de volta todas as migrações (desfaz todas as mudanças de esquema).
- Re-executa todas as migrações para reconstruir o esquema de banco de dados.
- Casos de uso típicos:
- Útil quando você deseja redefinir o esquema do banco de dados, mantendo a estrutura do banco de dados consistente por meio de migrações.
- Permite testar as migrações para garantir que elas possam ser aplicadas de maneira limpa várias vezes.
-Freqüentemente combinado com a opção `-semeada (` php artesan migrar: atualizar-semeado`) para repovoar o banco de dados com dados de sementes após a reconstrução.
- Vantagens:
- Mantém a estrutura do banco de dados consistente através da aplicação adequada dos métodos `Down ()` e `up ()`.
-Pode atualizar seletivamente um número limitado de migrações usando a opção `--step` (por exemplo,` php artesan migre: atualizar-etapa = 5 'reverterá e re-executará as últimas cinco migrações).
- Desempenho:
- pode ser mais lento que `migrar: fresh` ao lidar com um grande número de migrações porque executa o método` Down () `para cada migração antes de reapliciá -las.
- Dados:
- Como revira todas as migrações, os dados nas tabelas serão perdidos, a menos que seja realizado.
- Preserva a lógica de reversão definida dentro das migrações, para que possa evitar inconsistências se as migrações baixas forem cuidadosamente escritas.

Migrar: Redefinir

O comando `PHP Artisan Migre: Reset` revolve todas as migrações que foram aplicadas, retornando o banco de dados ao seu estado não migrado original.

- O que faz:
- Rolls de volta todas as migrações executando o método `Down ()` de cada migração.
- Ao contrário do `Refresh`, ele não executa novamente as migrações.
- Casos de uso típicos:
- Útil quando você deseja desfazer completamente todas as migrações sem reapliciá -las.
- Ajuda em cenários em que você precisa limpar completamente o esquema antes de decidir o que fazer a seguir.
- Vantagens:
- Limpa todas as mudanças no esquema de banco de dados baseadas em migração.
- Dados:
- Como no `refresch`, as migrações revertidas resulta na perda de dados da tabela.
- Nenhum esquema existirá assim que todas as migrações forem redefinidas.
- Comportamento:
- deixa o banco de dados em um estado não migrado.
- Requer executar manualmente `php artesan migrar 'depois se pretender reconstruir o esquema.

Contexto adicional: Migre: nova comparação

Embora não seja perguntada diretamente, o comando `Migre: Fresh` é frequentemente confundido com` refresch` e `reset` e ajuda a esclarecer ainda mais as diferenças:

- `PHP Artisan Migre: Fresh` deixa todas as tabelas diretamente no banco de dados, sem executar os métodos` Down () `, executa todas as migrações.
- É mais rápido porque, em vez de reverter a migração por migração, apenas solta todas as tabelas.
- Ideal para ambientes de desenvolvimento em que limpar o banco de dados sem lógica de reversão é aceitável.
-Como `refresch`, ele pode ser combinado com`-semeado` para repovoar dados (por exemplo, `migrar: fresh-semeado`).

Explicação mais profunda das diferenças

- Como acontece a reversão:
- `Refresh` e` Reset` Ambos dependem dos métodos `Down ()` de cada migração para desfazer as alterações do esquema.
- `Redefinir` Role tudo e para.
- `Refresh` revolve tudo e depois migra tudo novamente.
- Estado do banco de dados após o comando:
- Após o `reset`, o esquema do banco de dados está vazio (sem tabelas de migrações).
- Após o `Refresh`, o esquema do banco de dados é reconstruído como se migrado recentemente.
- Perda de dados:
- Ambos os comandos causam perda de dados, pois todas as migrações são revertidas totalmente.
-`Refresh` pode reintroduzir dados de sementes automaticamente se o sinalizador`-semeado` for usado.
- Casos de uso no ciclo de vida do desenvolvimento:
- Use `refresch` ao desenvolver ou testar migrações e você deseja reconstruir seu esquema enquanto possivelmente recapela os dados.
- Use `Reset` para limpar completamente o esquema de migração antes de aplicar novas migrações manualmente ou executar uma nova migrar.

Notas práticas para desenvolvedores de Laravel

- Ambos os comandos dependem das migrações que estão corretamente roteirizadas com os métodos `up ()` e `Down ()`, ou seja, se os métodos `down ()` estiverem ausentes ou incompletos, comandos de reversão (`` refrescam` e `reset`) podem falhar ou deixar o banco de dados em um estado inconsistente.
- `Refresh` pode ser considerado mais seguro do que 'fresco' em ambientes em que você deseja respeitar a lógica de reversão e possíveis relacionamentos de dados durante a migração.
- Nenhum dos comandos deve ser usado descuidadamente nos bancos de dados de produção sem backups, pois todos os dados serão perdidos.
- Eles são projetados principalmente para uso em ambientes de desenvolvimento ou teste local, onde a iteração do esquema é frequente e os dados podem ser redefinidos sem conseqüências.

Resumo

A principal distinção é:

- Migrar: Atualizar - Role de volta todas as migrações e execute todas as migrações novamente.
- Migrar: Redefinir - Role de volta todas as migrações, mas não as execute novamente.

`Migrar: Refresh` Efetivamente reconstrói o esquema do zero por reversão e migrar, permitindo que a reajuste e a atualização passo a passo, enquanto` migrar: reset` simplesmente retorna o banco de dados a um estado não migrado.

Ambos os comandos são ferramentas fundamentais para os desenvolvedores de Laravel para gerenciar as versões do banco de dados, mas servem diferentes fluxos de trabalho e têm impactos únicos no estado do banco de dados.

Esse entendimento ajuda a escolher o comando certo para diferentes estágios de desenvolvimento, teste e implantação de aplicativos.

Todo uso deve considerar as implicações para perda de dados, consistência do esquema de aplicativos e intenção do desenvolvedor para gerenciar as migrações de banco de dados em um projeto Laravel.