如何在Django中重置数据库?我收到命令'reset'not found错误

问题描述 投票:84回答:10

在此示例之后,跟随此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
python database django reset
10个回答
136
投票

reset已由Django 1.5替换为flush,请参阅:

python manage.py help flush

0
投票
python manage.py flush

已删除的旧数据库内容,

不要忘记创建新的超级用户:

python manage.py createsuperuser

31
投票

似乎“冲洗”答案适用于部分情况,但并非全部适用。我不仅需要刷新数据库中的值,还需要正确地重新创建表。我还没有使用迁移(早期),所以我确实需要删除所有表。

我发现删除所有表的两种方法都需要核心django以外的东西。

如果您在Heroku上,请使用pg:reset:删除所有表:

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb

如果您可以安装Django扩展,则可以使用一种方法来进行完全重置:

python ./manage.py reset_db --router=default

20
投票

类似于LisaD的答案,Django Extensions有一个很棒的reset_db命令,它完全删除了所有内容,而不仅仅是像“ flush”一样截断表。您必须指定一个路由器,所以它可能看起来像:

python ./manage.py reset_db --router=default

仅刷新表并不能解决在删除对象时发生的永久性错误。进行reset_db解决了该问题。


15
投票

如果您使用的是Django 2.0,然后

python manage.py flush 

将工作


8
投票

如果要清理整个数据库,可以使用:python manage.py刷新如果要清除Django应用程序的数据库表,可以使用:python manage.py迁移应用程序名称为零


8
投票

使用django 1.11,只需从每个应用程序的migrations文件夹中删除所有迁移文件(__init__.py以外的所有文件)。然后

  1. 手动删除数据库。
  2. 手动创建数据库。
  3. 运行python3 manage.py makemigrations
  4. 运行python3 manage.py migrate

瞧,您的数据库已经完全重置。


4
投票

对我来说,这解决了问题。

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

2
投票

只是对@LisaD's答案的跟进。从2016年(Django 1.9)开始,您需要输入:

heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate

这将为您在Heroku中提供一个全新的数据库。


1
投票
  1. 只需手动删除您的数据库。确保首先创建备份(在我的情况下,db.sqlite3是我的数据库)

  2. 运行此命令manage.py migrate

© www.soinside.com 2019 - 2024. All rights reserved.