关于python:Django迁移:关系不存在

Django migrations: relation does not exist

我的dev服务器上有一个工作站点和数据库,我正试图在一个活动服务器上安装它。我正在执行以下操作:

  • Git将存储库从dev服务器克隆到live服务器
  • 在Live Server(posgres)上创建空数据库
  • 更新Live Server上所有相关数据库等设置的settings.py
  • 删除所有迁移文件/文件夹并删除所有*.pyc文件
  • python manage.py生成迁移
  • 小精灵

    我得到错误:django.db.utils.ProgrammingError: relation"myapp_mytable" does not exist

    我似乎无法实现最初的迁移。我找到的唯一解决方案是进入我的settings.py文件,注释掉我在INSTALLED_APPS中的所有应用程序,进入我的主urls.py文件,注释掉我的所有URL。

    在注释完这些部分之后,我可以进行初始迁移。之后,我可以取消对应用程序的注释,并开始逐个迁移它们,例如:python manage.py makemigrations appname,然后是python manage.py migrate

    所以我有一个解决方案,但它远不是理想的。当然,有一种方法可以告诉Django我已经创建了一个全新的空数据库,因此它需要首先进行初始迁移。我正在使用ansible自动设置服务器,因此要求我执行所有这些手动注释/取消注释和多次迁移都是不好的。

    更新:

    根据评论,我不打算删除迁移。所以我在dev服务器上执行了以下操作来尝试重新创建它们:link。然而,即使我现在有迁移文件,我已经复制到了实时服务器,当我尝试运行它们时,我会得到与上面相同的错误。

    我已经阅读了迁移文件,没有看到任何关于创建初始迁移/数据库模式的内容。它只提到创建我的应用程序模型。在应用程序迁移完成之前,我似乎不知道如何进行初始迁移。我需要从头开始重新创建所有迁移文件(包括创建初始的DB模式),以便在服务器上运行它们。


    感谢@daniel roseman的评论,我最终解决了这个问题。我在做以下工作:

    1
    list(Correlation().get_entries())

    这所做的是创建一个模型实例(即:相关),并针对该实例调用get_entries()方法。然后我把它包围在list()中。出于某种原因,这阻止了迁移的工作。我删除了不需要的list(),现在一切正常。