Django迁移:关系不存在

时间:2017-02-13 10:06:03

标签: python django postgresql

我在我的开发服务器上有一个工作站点和数据库,我试图在实时服务器上设置它。我正在做以下事情:

  • Git将存储库从开发服务器克隆到实时服务器
  • 在实时服务器(Posgres)上创建空数据库
  • 在实时服务器上更新所有相关数据库等设置的settings.py
  • 删除所有迁移文件/文件夹并删除所有* .pyc文件
  • python manage.py makemigrations

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

我似乎无法进行初始迁移。我找到的唯一解决方案是进入我的settings.py文件并在INSTALLED_APPS中注释掉我的所有应用,然后进入我的主urls.py文件并注释掉我的所有网址。

在评论出这些部分之后,我能够进行初始迁移。之后,我可以取消注释我的应用并开始逐个迁移,即:python manage.py makemigrations appname然后python manage.py migrate

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

更新

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

我已阅读了迁移文件,但我没有看到任何提及创建初始迁移/数据库架构的内容。它只提到创建我的应用模型。在应用程序迁移完成之前,我似乎无法弄清楚如何进行初始迁移。我需要以某种方式从头开始重新创建所有迁移文件(包括创建初始数据库模式),以便它们可以在服务器上运行。

1 个答案:

答案 0 :(得分:3)

我最终在评论中感谢@Daniel Roseman。我正在做以下事情:

list(Correlation().get_entries())

这样做是创建一个模型实例(即:Correlation)并对其调用get_entries()方法。然后我在list()中包围了那个。出于某种原因,这阻止了迁移工作。我删除了无论如何都不需要的列表(),现在一切正常。