Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中重置db?我得到一个命令';重置';未找到错误_Python_Database_Django_Reset - Fatal编程技术网

Python 如何在Django中重置db?我得到一个命令';重置';未找到错误

Python 如何在Django中重置db?我得到一个命令';重置';未找到错误,python,database,django,reset,Python,Database,Django,Reset,以下是Django示例tutotrial: 教程说: “这会改变我们的表格布局,我们必须要求Django重置 并重新创建表: manage.py重置todo;manage.py syncdb” 但是,当我运行manage.py reset todo时,会出现以下错误: $ python manage.py reset todo - Unknown command: 'reset' $ python manage.py

以下是Django示例tutotrial:

教程说:

“这会改变我们的表格布局,我们必须要求Django重置 并重新创建表:

manage.py重置todo;manage.py syncdb

但是,当我运行
manage.py reset todo
时,会出现以下错误:

$ python manage.py reset todo                                       
- Unknown command: 'reset'
$ python manage.py sqlclear todo    
CommandError: App with label todo could not be found.    
Are you sure your INSTALLED_APPS setting is correct?
这是因为我使用的是sqlite3而不是postgresql吗

谁能告诉我重置数据库的命令是什么吗?

命令:
python manage.py sqlclear todo
返回错误:

$ python manage.py reset todo                                       
- Unknown command: 'reset'
$ 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”添加到已安装的应用程序中,并再次运行
python manage.py sqlclear todo
,导致以下错误:

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

reset
已被Django 1.5的
flush
替换,请参见:


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

我发现了两种删除所有表的方法,它们都需要除核心django之外的其他东西

如果您在Heroku上,请删除所有带有pg:reset:

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb
如果您可以安装Django Extensions,那么它有一种完全重置的方法:

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

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

python./manage.py reset\u 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
只是回答的后续问题。
截至2016年(
Django 1.9
),您需要键入:

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

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

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

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

  • 手动删除数据库
  • 手动创建数据库
  • 运行
    python3 manage.py makemigrations
  • 运行
    python3 manage.py migrate

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

    如果您使用的是Django 2.0 然后

    行得通

  • 只需手动删除您的数据库。确保首先创建备份(在我的例子中,db.sqlite3是我的数据库)

  • 运行此命令
    manage.py migrate

  • 删除旧数据库内容

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

    python manage.py createsuperuser
    

    不幸的是,像manage.py reset那样,这在单个应用程序上不起作用。它导致了一个错误:CommandError:Command不接受任何参数,sluckly,to 1.5:)谢谢,很高兴知道,最近(最近一次修改6个月前)关于fixture的django公共文档(2019-07-11)仍然在谈论“重置”:可能重复@jonalv,您必须先安装。另外,您需要将其包含在
    设置.py中的
    安装的应用程序下
    中。如果使用sqlite,则无需手动创建数据库,
    python3 manage.py makemigrations
    python3 manage.py migrate
    将解决这一问题,至少在django 2.0中这是我想要的,但我不必提供一个
    --router
    参数,也许五年后现在这是可选的?:)虽然这个问题很老,但这应该是公认的答案。当migratezero工作正常时,就不需要django扩展。
    python manage.py createsuperuser