在此示例之后,跟随此Django,http://lightbird.net/dbe/todo_list.html
本教程说:
“这将更改我们的表格布局,我们必须要求Django重置并重新创建表:
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
已由Django 1.5替换为flush
,请参阅:
python manage.py help flush
python manage.py flush
已删除的旧数据库内容,
不要忘记创建新的超级用户:
python manage.py createsuperuser
似乎“冲洗”答案适用于部分情况,但并非全部适用。我不仅需要刷新数据库中的值,还需要正确地重新创建表。我还没有使用迁移(早期),所以我确实需要删除所有表。
我发现删除所有表的两种方法都需要核心django以外的东西。
如果您在Heroku上,请使用pg:reset:删除所有表:
heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb
如果您可以安装Django扩展,则可以使用一种方法来进行完全重置:
python ./manage.py reset_db --router=default
类似于LisaD的答案,Django Extensions有一个很棒的reset_db命令,它完全删除了所有内容,而不仅仅是像“ flush”一样截断表。您必须指定一个路由器,所以它可能看起来像:
python ./manage.py reset_db --router=default
仅刷新表并不能解决在删除对象时发生的永久性错误。进行reset_db解决了该问题。
如果您使用的是Django 2.0,然后
python manage.py flush
将工作
如果要清理整个数据库,可以使用:python manage.py刷新如果要清除Django应用程序的数据库表,可以使用:python manage.py迁移应用程序名称为零
使用django 1.11,只需从每个应用程序的migrations
文件夹中删除所有迁移文件(__init__.py
以外的所有文件)。然后
python3 manage.py makemigrations
。python3 manage.py migrate
。瞧,您的数据库已经完全重置。
对我来说,这解决了问题。
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
只是对@LisaD's答案的跟进。从2016年(Django 1.9
)开始,您需要输入:
heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate
这将为您在Heroku中提供一个全新的数据库。
只需手动删除您的数据库。确保首先创建备份(在我的情况下,db.sqlite3是我的数据库)
运行此命令manage.py migrate