Folgen Sie diesem Django by Example-Tutotrial hier: http://lightbird.net/dbe/todo_list.html
Das Tutorial sagt:
"Dies ändert unser Tabellenlayout und wir müssen Django bitten, Tabellen zurückzusetzen und neu zu erstellen:
manage.py reset todo; manage.py syncdb
""
Wenn ich jedoch laufe manage.py reset todo
, erhalte ich den Fehler:
$ python manage.py reset todo
- Unknown command: 'reset'
Liegt das daran, dass ich sqlite3 und nicht postgresql verwende?
Kann mir jemand sagen, was der Befehl zum Zurücksetzen der Datenbank ist?
Der Befehl: python manage.py sqlclear todo
gibt den Fehler zurück:
$ python manage.py sqlclear todo
CommandError: App with label todo could not be found.
Are you sure your INSTALLED_APPS setting is correct?
Also habe ich meinem INSTALLED_APPS in settings.py 'todo' hinzugefügt und es python manage.py sqlclear todo
erneut ausgeführt, was zu folgendem Fehler führte:
$ python manage.py sqlclear todo
- NameError: name 'admin' is not defined
Antworten:
reset
wurde durchflush
Django 1.5 ersetzt, siehe:quelle
Es sieht so aus, als würde die Antwort "Flush" in einigen, aber nicht in allen Fällen funktionieren. Ich musste nicht nur die Werte in der Datenbank leeren, sondern auch die Tabellen richtig neu erstellen. Ich verwende noch keine Migrationen (in den frühen Tagen), daher musste ich wirklich alle Tabellen löschen.
Ich habe zwei Möglichkeiten gefunden, alle Tabellen zu löschen. Beide erfordern etwas anderes als Core-Django.
Wenn Sie auf Heroku sind, löschen Sie alle Tabellen mit pg: reset:
Wenn Sie Django Extensions installieren können, können Sie einen vollständigen Reset durchführen:
quelle
INSTALLED_APPS
insettings.py
.Ähnlich wie bei LisaDs Antwort verfügt Django Extensions über einen großartigen Befehl reset_db, mit dem alles vollständig gelöscht wird, anstatt nur die Tabellen wie bei "Flush" abzuschneiden.
python ./manage.py reset_db
Das bloße Leeren der Tabellen konnte keinen dauerhaften Fehler beheben, der beim Löschen von Objekten auftrat. Durch Ausführen einer reset_db wurde das Problem behoben.
quelle
--router
Argument vorbringen, vielleicht ist das jetzt, fünf Jahre später, optional? :)Wenn Sie Django 2.0 verwenden, dann
wird funktionieren
quelle
Wenn Sie die gesamte Datenbank bereinigen möchten, können Sie Folgendes verwenden: python manage.py flush Wenn Sie die Datenbanktabelle einer Django-App bereinigen möchten, können Sie Folgendes verwenden: python manage.py migrate appname zero
quelle
Löschen Sie mit django 1.11 einfach alle Migrationsdateien aus dem
migrations
Ordner jeder Anwendung (außer allen Dateien__init__.py
). Dannpython3 manage.py makemigrations
.python3 manage.py migrate
.Und voilla, deine Datenbank wurde komplett zurückgesetzt.
quelle
python3 manage.py makemigrations
undpython3 manage.py migrate
kümmern sich darum, zumindest in Django 2.0Für mich löste dies das Problem.
quelle
Nur eine Fortsetzung der Antwort von @ LisaD .
Ab 2016 (
Django 1.9
) müssen Sie Folgendes eingeben:Dadurch erhalten Sie eine neue Datenbank in Heroku.
quelle
Löschen Sie einfach Ihre Datenbank manuell. Stellen Sie sicher, dass Sie zuerst ein Backup erstellen (in meinem Fall ist db.sqlite3 meine Datenbank).
Führen Sie diesen Befehl aus
manage.py migrate
quelle
alte Datenbankinhalte gelöscht,
Vergessen Sie nicht, einen neuen Superuser zu erstellen:
quelle