问题
Following this Django by Example tutotrial here: http://lightbird.net/dbe/todo_list.html
The tutorial says:
"This changes our table layout and we’ll have to ask Django to reset and recreate tables:
manage.py reset todo; manage.py syncdb
"
though, when I run manage.py reset todo
, I get the error:
$ python manage.py reset todo
- Unknown command: 'reset'
Is this because I am using sqlite3 and not postgresql?
Can somebody tell me what the command is to reset the database?
The command: python manage.py sqlclear todo
returns the error:
$ python manage.py sqlclear todo
CommandError: App with label todo could not be found.
Are you sure your INSTALLED_APPS setting is correct?
So I added 'todo' to my INSTALLED_APPS in settings.py, and ran python manage.py sqlclear todo
again, resulting in this error:
$ python manage.py sqlclear todo
- NameError: name 'admin' is not defined
回答1:
reset
has been replaced by flush
with Django 1.5, see:
python manage.py help flush
回答2:
It looks like the 'flush' answer will work for some, but not all cases. I needed not just to flush the values in the database, but to recreate the tables properly. I'm not using migrations yet (early days) so I really needed to drop all the tables.
Two ways I've found to drop all tables, both require something other than core django.
If you're on Heroku, drop all the tables with pg:reset:
heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb
If you can install Django Extensions, it has a way to do a complete reset:
python ./manage.py reset_db --router=default
回答3:
Similar to LisaD's answer, Django Extensions has a great reset_db command that totally drops everything, instead of just truncating the tables like "flush" does. You have to specify a router, so it may look like:
python ./manage.py reset_db --router=default
Merely flushing the tables wasn't fixing a persistent error that occurred when I was deleting objects. Doing a reset_db fixed the problem.
回答4:
if you are using Django 2.0 Then
python manage.py flush
will work
回答5:
If you want to clean the whole database, you can use: python manage.py flush If you want to clean database table of a Django app, you can use: python manage.py migrate appname zero
回答6:
With django 1.11, simply delete all migration files from the migrations
folder of each application (all files except __init__.py
). Then
- Manually drop database.
- Manually create database.
- Run
python3 manage.py makemigrations
. - Run
python3 manage.py migrate
.
And voilla, your database has been completely reset.
回答7:
For me this solved the problem.
heroku pg:reset DATABASE_URL
heroku run bash
>> Inside heroku bash
cd app_name && rm -rf migrations && cd ..
./manage.py makemigrations app_name
./manage.py migrate
回答8:
Just a follow up to @LisaD's answer.
As of 2016 (Django 1.9
), you need to type:
heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate
This will give you a fresh new database within Heroku.
回答9:
Just manually delete you database. Ensure you create backup first (in my case db.sqlite3 is my database)
Run this command
manage.py migrate
回答10:
python manage.py flush
deleted old db contents,
Don't forget to create new superuser:
python manage.py createsuperuser
来源:https://stackoverflow.com/questions/15454008/how-to-reset-db-in-django-i-get-a-command-reset-not-found-error