Comment faire pour réinitialiser db dans Django? Je reçois une commande "reset" ne trouve pas d'erreur
La suite de cette Django par Exemple tutotrial ici: http://lightbird.net/dbe/todo_list.html
Le tutoriel dit:
"Cela change notre table et nous allons demander Django pour réinitialiser
et de recréer les tables:
manage.py reset todo; manage.py syncdb
"
bien que, quand je lance manage.py reset todo
, j'obtiens l'erreur:
$ python manage.py reset todo
- Unknown command: 'reset'
Est-ce parce que je suis en utilisant sqlite3 et pas de postgresql?
Quelqu'un peut-il me dire quelle est la commande pour réinitialiser la base de données?
La commande: python manage.py sqlclear todo
renvoie l'erreur:
$ python manage.py sqlclear todo
CommandError: App with label todo could not be found.
Are you sure your INSTALLED_APPS setting is correct?
J'ai donc ajouté "todo" pour mon INSTALLED_APPS dans settings.py et a couru python manage.py sqlclear todo
de nouveau, résultant de cette erreur:
$ python manage.py sqlclear todo
- NameError: name 'admin' is not defined
Vous devez vous connecter pour publier un commentaire.
reset
a été remplacé parflush
avec Django 1.5, voir:Il ressemble à la "chasse" réponse vont fonctionner pour certains, mais pas tous les cas. Je n'avais pas besoin juste pour rincer les valeurs dans la base de données, mais de recréer les tables correctement. Je ne suis pas en utilisant les migrations encore (premiers jours) donc j'ai vraiment besoin d'abandonner toutes les tables.
Deux façons que j'ai trouvé pour déposer tous les tableaux, à la fois besoin de quelque chose d'autre que de base de django.
Si vous êtes sur Heroku, supprimez toutes les tables avec pg:reset:
Si vous pouvez installer Django Extensions, il a un moyen de faire un reset complet:
INSTALLED_APPS
danssettings.py
.Similaire à LisaD réponse, Django Extensions a une grande reset_db commande totalement gouttes tout, au lieu de les tronquer les tables comme "flush" ne. Vous devez spécifier un routeur, il peut ressembler à:
python ./manage.py reset_db --router=default
Simple rinçage de la tables n'était pas la fixation d'une persistante erreur qui s'est produite lorsque j'ai été de supprimer des objets. Faire un reset_db résolu le problème.
--router
argument, c'est peut-être en option maintenant, cinq ans plus tard? 🙂si vous utilisez Django 2.0
Puis
travaillera
Si vous voulez nettoyer l'ensemble de la base de données, vous pouvez utiliser:
python manage.py rincer
Si vous voulez nettoyer la table de base de données de Django app, vous pouvez utiliser:
python manage.py migrer appname zéro
Avec django, 1.11, il suffit de supprimer tous les fichiers de migration de la
migrations
dossier de chaque application (tous les fichiers sauf__init__.py
). Puispython3 manage.py makemigrations
.python3 manage.py migrate
.Et voilla, votre base de données a été complètement réinitialisé.
python3 manage.py makemigrations
etpython3 manage.py migrate
prendra soin de cela, au moins dans django 2.0Pour moi, cela a résolu le problème.
Juste un suivi de @LisaD de l' réponse.
À compter de 2016 (
Django 1.9
), vous devez taper:Cela vous donnera une nouvelle base de données dans Heroku.
Juste supprimer manuellement votre base de données. Vous assurer de créer une sauvegarde d'abord (dans mon cas db.sqlite3 est ma base de données)
Exécuter cette commande
manage.py migrate
supprimée ancienne db contenu,
N'oubliez pas de créer de nouveaux super-utilisateur: