Redefinir migrações no Django

Vaibhav Vaibhav 30 janeiro 2023
  1. Redefinir todo o banco de dados no Django
  2. Reverter um aplicativo Django para suas antigas migrações
Redefinir migrações no Django

Ao trabalhar com bancos de dados, geralmente temos que redefinir um banco de dados porque o preenchemos com dados inúteis. Às vezes, acabamos até configurando um banco de dados com base em um esquema de banco de dados sujeito a erros. Às vezes, acabamos até mudando a lógica de negócios, que ajusta todo o design do banco de dados. Essas situações são bastante comuns no campo da Ciência da Computação, e algumas boas ferramentas e comandos foram construídos para lidar com elas.

No Django, se acabarmos em tal situação, temos que redefinir as migrações e o banco de dados. Ao redefinir as migrações, temos algumas opções na lista.

  1. Redefinir todo o banco de dados
  2. Reverter um aplicativo Django para algumas migrações antigas

Redefinir todo o banco de dados no Django

Quando precisamos redefinir todo o banco de dados no Django, existem algumas opções na lista.

  1. Se estivermos usando o banco de dados SQLite padrão do Django, podemos deletar o arquivo de banco de dados db.sqlite3 e então deletar todas as pastas migrations dentro de todos os aplicativos. Depois de deletar as pastas migrations, podemos refazer as migrações e migrá-las usando dois comandos; a saber, python manage.py makemigrations e python manage.py migrate.
  2. Se estivermos usando algum outro banco de dados relacional como PostgreSQL ou MySQL, podemos excluir todas as tabelas usando uma ferramenta de gerenciamento de banco de dados como pgAdmin, DBeaver, etc. ou manualmente usando a linha de comando. Ou podemos criar um novo banco de dados e então conectá-lo ao nosso Projeto Django. Note que, para ambos os casos, deve-se primeiro deletar todas as pastas migrations e depois refazer as migrações e, por último, migrá-las.
  3. Outra opção é usar o comando manage.py do Django para limpar todo o banco de dados para nós. O comando é python manage.py flush. Novamente, depois de usar este comando, temos que deletar todas as pastas migrations e então fazer as novas migrações.

Reverter um aplicativo Django para suas antigas migrações

Se não tivermos que redefinir todo o banco de dados, mas reverter as migrações para um aplicativo Django específico, temos duas opções para isso. Primeiro, podemos reverter as migrações atuais de um aplicativo Django para algumas migrações antigas. Em segundo lugar, podemos redefinir todas as migrações para o aplicativo Django.

Se precisarmos migrar de volta de alguma migração mais recente, digamos 0014, para uma migração mais antiga, digamos 0008, podemos usar os seguintes comandos.

python manage.py migrate AppName 0008
            --- OR ---
python manage.py migrate AppName 0008_migration_name

E, se tivermos que redefinir todas as migrações para um aplicativo Django, podemos usar o seguinte comando.

python manage.py migrate AppName zero

Observe que às vezes as migrações podem ser irreversíveis. Geralmente, esta condição surge quando algumas mudanças significativas são feitas nos Modelos Django. Quando tentarmos voltar a tal migração, Django irá gerar um IrreversibleError.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artigo relacionado - Django Migration