我的开发服务器上有一个工作站点和数据库,我正在尝试将其设置在实时服务器上。我正在执行以下操作:
- Git 将存储库从开发服务器克隆到实时服务器
- 在实时服务器 (Posgres) 上创建空数据库
- 更新实时服务器上的 settings.py 以获取所有相关的数据库等设置
- 删除所有迁移文件/文件夹并删除所有 *.pyc 文件
- python 管理.py makemigrations
我收到错误:django.db.utils.ProgrammingError:关系“myapp_mytable”不存在
。
我似乎无法进行初始迁移。我找到的唯一解决方案是进入我的 settings.py
文件并注释掉 INSTALLED_APPS
中的所有应用程序,然后进入我的主 urls.py
文件并注释掉我所有的网址。
注释掉这些部分后,我可以进行初始迁移。之后,我可以取消注释我的应用程序并开始逐一迁移它们,即:python manage.py makemigrations appname
然后python manage.py migrate
所以我有一个解决方法,但它远非理想。当然有一种方法可以告诉 django 我已经创建了一个全新的空数据库,因此它需要首先进行初始迁移。我正在使用 Ansible 自动化服务器设置,因此要求我执行所有这些手动注释/取消注释和多次迁移是不好的。
更新:
根据评论,我不打算删除迁移。因此,我在开发服务器上执行了以下操作来尝试重新创建它们:link 。然而,即使我现在有已复制到实时服务器的迁移文件,当我尝试运行它们时,我收到与上面相同的错误。
我已通读迁移文件,但没有看到任何提及创建初始迁移/数据库架构的内容。它只提到创建我的应用程序模型。我似乎不知道如何在应用程序迁移完成之前进行初始迁移。我需要以某种方式从头开始重新创建所有迁移文件(包括创建初始数据库模式),以便它们可以在服务器上运行。
最佳答案
感谢评论中的@Daniel Roseman,我最终解决了这个问题。我正在执行以下操作:
list(Correlation().get_entries())
它所做的是创建一个模型实例(即:关联)并针对该实例调用 get_entries() 方法。然后我将其包围在 list() 中。由于某种原因,这导致迁移无法进行。我删除了无论如何都不需要的 list() ,现在一切正常了。
关于python - Django 迁移 : relation does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201371/