在Heroku上使用Django - /关系的编程错误“...”不存在

4
我遇到了这个错误。通常发生这种错误是因为数据库没有正确迁移。
当我运行heroku local web时,当我访问localhost:5000时,网站可以正常工作。
但是,当我使用git push heroku master将应用程序部署到Heroku后,就会出现错误。
换句话说,在我的本地环境中它能够正常工作。但是在部署到Heroku之后却不能正常工作。
我在Heroku上安装了Heroku-Postgres作为附加组件。
可能是什么原因导致了这个问题?

2
你运行了 heroku run manage.py migrate 吗? - Daniel Roseman
那就是问题所在。我一直在执行python manage.py migrate,然后部署它,以为这样就可以了。谢谢。 - Valachio
3个回答

5
在bash heroku中执行迁移(migrations)和创建迁移(makemigrations)操作。在本地项目文件夹中打开终端并输入以下命令:
heroku run bash
~$  ./manage.py makemigrations
~$  ./manage.py migrate
~$  exit

8
不要在Heroku上运行 makemigrations。在部署时,您不应该有任何会生成新迁移的模型更改。请在本地运行该命令,并提交迁移文件。在Heroku上,您只能通过 manage.py migrate 运行迁移。 - Chris

1
以下步骤对我有用:
  1. 进行所有必要的迁移(python manage.py makemigrations)和本地迁移(python manage.py migrate),
  2. 推送到 Heroku 主分支,
  3. 最后运行 heroku run python manage.py migrate
问题已解决。

0

在将模型更改后部署到Heroku之后,我遇到了同样的错误。

我解决这个问题的唯一方法是执行以下步骤:

  • 重置Heroku中的数据库
  • 从本地受损应用程序的迁移文件夹中删除迁移文件(但保留目录和 __init__.py 文件)
  • 运行 python manage.py makemigrationspython manage.py migrate。 这将使用干净的迁移文件重新填充迁移文件夹。
  • 推送更改到主分支(确保您没有将迁移目录包括在.gitignore文件中)。
  • 将更改部署到Heroku
  • 运行Heroku shell heroku run bash
  • 运行 python manage.py migrate

我之所以能够这样做,是因为我的表中没有太多数据,但如果我的表中有更多数据,我会尝试避免重置数据库。


我可以问一下在Heroku上怎么重置数据库吗? - Lab
使用Heroku Web控制台很容易完成。在dashboard.heroku.com中选择您的应用程序。您会发现数据库位于“add-ons”下,其中一个选项可用于重置数据库。 - femeloper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接