如何重置Django中的数据库? 我得到一个命令“重置”未find错误
在这个Django的示例tutotrial在这里: http ://lightbird.net/dbe/todo_list.html
教程说:
“这改变了我们的表格布局,我们不得不要求Django重置和重新创build表格:
manage.py reset todo; manage.py syncdb
manage.py reset todo; manage.py syncdb
“
但是,当我运行manage.py reset todo
,我得到的错误:
$ python manage.py reset todo - Unknown command: 'reset'
这是因为我使用sqlite3而不是postgresql?
有人可以告诉我什么命令是重置数据库?
命令: python manage.py sqlclear todo
返回错误:
$ python manage.py sqlclear todo CommandError: App with label todo could not be found. Are you sure your INSTALLED_APPS setting is correct?
所以我在settings.py中向我的INSTALLED_APPS添加了“todo”,并再次运行python manage.py sqlclear todo
,导致出现此错误:
$ python manage.py sqlclear todo - NameError: name 'admin' is not defined
reset
已被replace为与Django 1.5 flush
,请参阅:
python manage.py help flush
它看起来像“同花顺”的答案将适用于一些,但不是所有情况。 我不仅需要刷新数据库中的值,而且要正确地重新创build表。 我还没有使用迁移(早期),所以我真的需要删除所有的表。
在Heroku上,可以用pg删除所有表格:reset:
heroku pg:reset DATABASE_URL heroku run python manage.py syncdb
虽然manage.py'reset'被replace为'flush',但是Django Extensions仍然有一个方法可以完成一个完整的重置:
python ./manage.py reset_db --router=default
类似于LisaD的回答, Django扩展有一个很好的reset_db命令,它完全放弃了一切,而不是像“flush”一样截断表。 你必须指定一个路由器,所以它可能看起来像:
python ./manage.py reset_db --router=default
仅仅是刷新表格并不能解决我在删除对象时发生的持续性错误。 做一个reset_db修复了这个问题。
对我来说,这解决了这个问题。
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
如果要清理整个数据库,可以使用: python manage.py flush如果要清理Django应用程序的数据库表,可以使用: python manage.py migrate appname zero
只需跟进@ LisaD的答案。
截至2016年( Django 1.9
),你需要input:
heroku pg:reset DATABASE_URL heroku run python manage.py makemigrations heroku run python manage.py migrate
这将给你一个Heroku内新的数据库。
使用django 1.11,只需删除每个应用程序的migrations
文件夹中的所有迁移文件(除__init__.py
之外的所有文件)。 然后
- 手动删除数据库。
- 手动创build数据库。
- 运行
python3 manage.py makemigrations
。 - 运行
python3 manage.py migrate
。
而哇,你的数据库已经完全重置。