gpt4 book ai didi

Django:刷新命令没有完全清除数据库,重置失败

转载 作者:行者123 更新时间:2023-12-04 05:58:29 25 4
gpt4 key购买 nike

我重写了很多模型,因为我只是在运行一个测试服务器,所以我使用 ./manage.py reset myapp 来重置数据库表,一切正常。

但我这次尝试这样做,我得到一个错误,

“完整错误:关系“myapp_tagger”的约束 owner_id_refs_id_9036cedd 不存在”

所以我想我会核对整个网站并重新开始。所以我做了。 .我认为flush应该删除所有表。 syncdb 说没有添加任何装置。

我认为该错误与我将标记器模型更改为具有与另一个对象绑定(bind)的名称所有者的外键有关。

我尝试将related_name 添加到外键参数中,但似乎没有任何效果。

最佳答案

I thought that flush was supposed to drop all tables.



没有。根据 documentation , manage.py flush不会丢表。相反,它执行以下操作:

Returns the database to the state it was in immediately after syncdb was executed. This means that all data will be removed from the database, any post-synchronization handlers will be re-executed, and the initial_data fixture will be re-installed.



chapter 10 of The Django Book 中所述在“更改数据库架构”部分中,

syncdb merely creates tables that don't yet exist in your database — it does not sync changes in models or perform deletions of models. If you add or change a model's field, or if you delete a model, you’ll need to make the change in your database manually.



因此,要解决您的问题,您需要:
  • 删除数据库并重新发布manage.py syncdb .这是我在开发数据库模式时使用的过程。我使用了一个 initial_data 夹具来安装一些测试数据,当数据库模式发生变化时也需要更新这些数据。
  • 手动发出 SQL 命令来修改您的数据库模式。
  • 使用South .
  • 关于Django:刷新命令没有完全清除数据库,重置失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4550389/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com