120

在此处通过示例教程遵循此 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 中将 'todo' 添加到我的 INSTALLED_APPS 中,然后python manage.py sqlclear todo再次运行,导致此错误:

$ python manage.py sqlclear todo                                      
- NameError: name 'admin' is not defined
4

10 回答 10

175

reset已被flushDjango 1.5 取代,请参见:

python manage.py help flush
于 2013-03-16T20:00:52.583 回答
37

看起来“同花顺”的答案适用于某些情况,但并非所有情况。我不仅需要刷新数据库中的值,还需要正确地重新创建表。我还没有使用迁移(早期),所以我真的需要删除所有表。

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

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

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

如果您可以安装 Django 扩展,它有一种方法可以完全重置:

python ./manage.py reset_db --router=default
于 2013-08-23T18:26:51.893 回答
24

与 LisaD 的答案类似,Django Extensions有一个很棒的 reset_db 命令,它可以完全删除所有内容,而不是像“flush”那样截断表。

python ./manage.py reset_db

仅仅刷新表并不能修复我删除对象时发生的持久性错误。做一个 reset_db 解决了这个问题。

于 2013-08-30T22:06:49.457 回答
21

如果你使用的是 Django 2.0 那么

python manage.py flush 

将工作

于 2017-12-16T10:49:23.097 回答
16

如果要清理整个数据库,可以使用: python manage.py flush 如果要清理 Django 应用程序的数据库表,可以使用: python manage.py migrate appname zero

于 2016-05-13T19:02:44.637 回答
11

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

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

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

于 2017-10-22T07:33:08.410 回答
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
于 2015-07-30T16:46:02.350 回答
3

只是跟进@LisaD 的回答。
截至 2016 年 ( Django 1.9),您需要输入:

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

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

于 2016-04-27T13:01:47.410 回答
3
python manage.py flush

删除了旧的数据库内容,

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

python manage.py createsuperuser
于 2019-07-18T04:29:35.693 回答
2
  1. 只需手动删除您的数据库。确保首先创建备份(在我的情况下db.sqlite3是我的数据库)

  2. 运行此命令manage.py migrate

于 2019-02-06T17:26:13.633 回答