Po tym Django na przykładzie tutotrial tutaj: http://lightbird.net/dbe/todo_list.html
Samouczek mówi:
„To zmienia układ naszych tabel i będziemy musieli poprosić Django o zresetowanie i odtworzenie tabel:
manage.py reset todo; manage.py syncdb
"
chociaż po uruchomieniu pojawia manage.py reset todo
się błąd:
$ python manage.py reset todo
- Unknown command: 'reset'
Czy to dlatego, że używam sqlite3, a nie postgresql?
Czy ktoś może mi powiedzieć, jakie jest polecenie resetowania bazy danych?
Polecenie: python manage.py sqlclear todo
zwraca błąd:
$ python manage.py sqlclear todo
CommandError: App with label todo could not be found.
Are you sure your INSTALLED_APPS setting is correct?
Więc dodałem `` todo '' do moich INSTALLED_APPS w settings.py i uruchomiłem python manage.py sqlclear todo
ponownie, co spowodowało ten błąd:
$ python manage.py sqlclear todo
- NameError: name 'admin' is not defined
Odpowiedzi:
reset
został zastąpiony przezflush
Django 1.5, zobacz:źródło
Wygląda na to, że odpowiedź „flush” będzie działać w niektórych, ale nie we wszystkich przypadkach. Musiałem nie tylko wyczyścić wartości w bazie danych, ale także poprawnie odtworzyć tabele. Nie używam jeszcze migracji (wczesne dni), więc naprawdę musiałem porzucić wszystkie tabele.
Znalazłem dwa sposoby usuwania wszystkich tabel, oba wymagają czegoś innego niż podstawowe django.
Jeśli jesteś na Heroku, upuść wszystkie stoły za pomocą pg: reset:
Jeśli możesz zainstalować rozszerzenia Django, ma sposób na całkowity reset:
źródło
INSTALLED_APPS
wsettings.py
.Podobnie jak w przypadku odpowiedzi LisaD, Django Extensions ma świetne polecenie reset_db, które całkowicie odrzuca wszystko, zamiast po prostu obcinać tabele, jak robi to „flush”.
python ./manage.py reset_db
Samo opróżnianie tabel nie naprawiało trwałego błędu, który występował podczas usuwania obiektów. Wykonanie reset_db rozwiązało problem.
źródło
--router
argumentów, może teraz, pięć lat później, to jest opcjonalne? :)jeśli używasz Django 2.0 Then
będzie działać
źródło
Jeśli chcesz wyczyścić całą bazę danych, możesz użyć: python manage.py flush Jeśli chcesz wyczyścić tabelę bazy danych aplikacji Django, możesz użyć: python manage.py migrate appname zero
źródło
W django 1.11 po prostu usuń wszystkie pliki migracyjne z
migrations
folderu każdej aplikacji (wszystkie pliki oprócz__init__.py
). Następniepython3 manage.py makemigrations
.python3 manage.py migrate
.I voilla, twoja baza danych została całkowicie zresetowana.
źródło
python3 manage.py makemigrations
ipython3 manage.py migrate
zajmie się tym, przynajmniej w django 2.0Dla mnie to rozwiązało problem.
źródło
To tylko kontynuacja odpowiedzi @ LisaD .
Od 2016 r. (
Django 1.9
) Należy wpisać:Dzięki temu otrzymasz nową bazę danych w Heroku.
źródło
Po prostu ręcznie usuń bazę danych. Upewnij się, że najpierw utworzysz kopię zapasową (w moim przypadku db.sqlite3 jest moją bazą danych)
Uruchom to polecenie
manage.py migrate
źródło
usunięta stara zawartość bazy danych,
Nie zapomnij utworzyć nowego superużytkownika:
źródło