Réinitialiser les migrations dans Django
- Réinitialiser toute la base de données dans Django
- Rétablir une application Django vers ses anciennes migrations
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.
- Réinitialiser toute la base de données
- 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.
- 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 dossiersmigrations
à l’intérieur de toutes les applications. Après avoir supprimé les dossiersmigrations
, nous pouvons refaire les migrations et les migrer à l’aide de deux commandes ; à savoir,python manage.py makemigrations
etpython manage.py migrate
. - 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 dossiersmigrations
puis refaire les migrations et, enfin, les migrer. - Une autre option consiste à utiliser la commande
manage.py
de Django pour effacer toute la base de données pour nous. La commande estpython manage.py flush
. Encore une fois, après avoir utilisé cette commande, nous devons supprimer tous les dossiersmigrations
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
.