问题描述
我的开发服务器上有一个工作站点和数据库,我正在尝试在实时服务器上进行设置。 我正在执行以下操作:
- 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
文件并注释掉所有URL。
在注释掉那些部分之后,我就可以进行初始迁移了。
之后,我可以取消注释我的应用程序,并开始一个一个地迁移它们,即: python manage.py makemigrations appname
然后python manage.py migrate
python manage.py makemigrations appname
因此,我有一个解决方法,但这远非理想。 当然,有一种方法可以告诉django,我已经创建了一个全新的空数据库,因此它需要首先进行初始迁移。 我使用Ansible使服务器设置自动化,因此要求我执行所有此手动注释/取消注释操作和多次迁移是不好的。
更新:
根据评论,我不认为要删除迁移。 因此,我在开发服务器上进行了以下尝试来尝试重新创建它们: 。 但是,即使我现在有已复制到实时服务器的迁移文件,当我尝试运行它们时,也会遇到与上述相同的错误。
我已经阅读了迁移文件,但看不到任何有关创建初始迁移/数据库架构的内容。 它仅提及创建我的应用程序模型。 我似乎无法弄清楚在完成应用程序迁移之前如何进行初始迁移。 我需要以某种方式重新创建所有迁移文件(包括创建初始数据库模式),以便它们可以在服务器上运行。
1楼
我最终在@Daniel Roseman的评论中找到了问题。 我正在执行以下操作:
list(Correlation().get_entries())
这是在创建一个模型实例(即:Correlation)并针对此实例调用get_entries()方法。 然后,我将其包围在list()中。 由于某种原因,这阻止了迁移工作。 我删除了没有必要的list(),现在一切正常。