web-dev-qa-db-fra.com

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

J'essaie de refactoriser un projet Django. J'ai renommé quelques applications et en ai ajouté une nouvelle, en plus de mélanger quelques modèles. Je souhaite effacer ma base de données et mes migrations et recommencer à zéro, mais je ne sais pas comment y parvenir. Voici ce que j'ai fait:

rm -r myapp/migrations // I ran this for all my apps    
python manage.py flush
python manage.py makemigrations myapp // I ran this for all my apps
python manage.py migrate // This errors

Je reçois une erreur:

Django.db.utils.OperationalError: table "myapp_mymodel" already exists

Quelqu'un peut-il me dire ce que je peux faire de mal?

EDIT: Quelle est la commande Django pour supprimer toutes les tables? n'a pas marché.

5
grez

Supprimez la base de données et supprimez les fichiers de migration (.py et .pyc) dans le répertoire migrations de votre application (ne supprimez pas le fichier __init__.py). Puis exécutez python manage.py makemigrations app et python manage.py migrate.

23
vsd

J'ai eu le même problème, avec Django 1.10, voici ce que j'ai fait, j'ai supprimé le fichier sqlite de la base de données, supprimé les dossiers pycache de chacune des applications, supprimé tous les fichiers du dossier de migration de chaque application, à l'exception du init . py, puis a exécuté python manage.py makemigrations et python manage.py migrate. Notez également que, comme vous avez supprimé la base de données, vous devrez créer un nouveau superutilisateur à l'aide de python manage.py createsuperuser. J'espère que cela t'aides 

2
Daniel Vieira

Pour moi, juste

python manage.py flush

ancien contenu de la base de données supprimé, j'ai donc pu créer de nouveaux enregistrements dans Django 2.1.4.

N'oubliez pas de créer un nouveau superutilisateur:

python manage.py createsuperuser
0
WebComer

Ne supprimez pas votre fichier de base de données!

Il est correct de supprimer les fichiers de migration, puis d'exécuter le vidage, mais la suppression du fichier de base de données SQLite est erronée. Cela a fonctionné pour moi à chaque fois. Si vous utilisez une autre base de données, cela vous évitera beaucoup de travail et de préparation.

  1. supprimer tous les fichiers ".py" et ".pyc" manuellement
  2. python gérer.py flush
    tapez "oui" pour confirmer 
  3. python manage.py makemigrations 
  4. python manage.py migrer
0
winux