Réinitialiser les migrations dans Django

Vaibhav Vaibhav 30 janvier 2023
  1. Réinitialiser toute la base de données dans Django
  2. Rétablir une application Django vers ses anciennes migrations
Réinitialiser les migrations dans Django

Lorsque nous travaillons avec des bases de données, nous devons souvent réinitialiser une base de données car nous la remplissons de données inutiles. Parfois, nous finissons même par configurer une base de données basée sur un schéma de base de données sujet aux erreurs. Parfois, nous finissons même par changer la logique métier, ce qui ajuste toute la conception de la base de données. Ces situations sont assez courantes dans le domaine de l’informatique, et de bons outils et commandes ont été construits pour les gérer.

Dans Django, si nous nous retrouvons dans une telle situation, nous devons réinitialiser les migrations et la base de données. Lors de la réinitialisation des migrations, nous avons quelques options sur la liste.

  1. Réinitialiser toute la base de données
  2. Rétablir une application Django vers d’anciennes migrations

Réinitialiser toute la base de données dans Django

Lorsque nous devons réinitialiser toute la base de données dans Django, il y a quelques options dans la liste.

  1. Si nous utilisons la base de données SQLite par défaut de Django, nous pouvons supprimer le fichier de base de données db.sqlite3 puis supprimer tous les dossiers migrations à l’intérieur de toutes les applications. Après avoir supprimé les dossiers migrations, nous pouvons refaire les migrations et les migrer à l’aide de deux commandes ; à savoir, python manage.py makemigrations et python manage.py migrate.
  2. Si nous utilisons une autre base de données relationnelle telle que PostgreSQL ou MySQL, nous pouvons soit supprimer toutes les tables à l’aide d’un outil de gestion de base de données tel que pgAdmin, DBeaver, etc. ou manuellement à l’aide de la ligne de commande. Ou, nous pouvons créer une toute nouvelle base de données, puis la connecter à notre projet Django. A noter que, dans les deux cas, il faut d’abord supprimer tous les dossiers migrations puis refaire les migrations et, enfin, les migrer.
  3. Une autre option consiste à utiliser la commande manage.py de Django pour effacer toute la base de données pour nous. La commande est python manage.py flush. Encore une fois, après avoir utilisé cette commande, nous devons supprimer tous les dossiers migrations puis effectuer les nouvelles migrations.

Rétablir une application Django vers ses anciennes migrations

Si nous ne devons pas réinitialiser toute la base de données mais annuler les migrations pour une application Django spécifique, nous avons deux options pour cela. Tout d’abord, nous pouvons inverser les migrations actuelles d’une application Django vers certaines anciennes migrations. Deuxièmement, nous pouvons réinitialiser toutes les migrations pour l’application Django.

Si nous devons migrer depuis une dernière migration, disons 0014, vers une ancienne migration, disons 0008, nous pouvons utiliser les commandes suivantes.

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

Et, si nous devons réinitialiser toutes les migrations pour une application Django, nous pouvons utiliser la commande suivante.

python manage.py migrate AppName zero

Notez que parfois les migrations peuvent être irréversibles. Généralement, cette condition survient lorsque des modifications importantes ont été apportées aux modèles Django. Lorsque nous essayons de revenir à une telle migration, Django génère une 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.

Article connexe - Django Migration