Heroku 上的“'/blog/' 处的编程错误”

Posted

技术标签:

【中文标题】Heroku 上的“\'/blog/\' 处的编程错误”【英文标题】:"ProgrammingError at '/blog/'" on HerokuHeroku 上的“'/blog/' 处的编程错误” 【发布时间】:2020-11-09 15:24:25 【问题描述】:

在我意识到我可以更早地使用虚拟环境之前,完成了一个应用程序并准备在 Heroku 上进行部署。无论如何,我创建了 Virtualenv 并部署在 Heroku 上。除了博客页面,一切都很好。我不断得到:

ProgrammingError at '/blog/' relation 'blog_post ' does not exist".

同时它在本地服务器上运行良好。我不知道这是 Sqlite-Heroku 的 bug 还是 Django 版本的问题(App 是用本地 django 3.0 编写的,但 3.0.8 安装在虚拟环境中)。

【问题讨论】:

你能显示完整的 SQL 查询以及你的数据库表吗? from django.db import models class Post(models.Model): title = models.CharField(max_length=140) body = models.TextField() date = models.DateTimeField() def __str__(self): return self.title 抱歉搞混了。我可以发送屏幕截图,但看起来我无法将图片附加到 cmets 总是把代码、数据和错误信息作为文本(不是图片)有问题(不在评论中)——它会更易读,更多人会看到它(所以更多人可以帮助你) 【参考方案1】:

这里的问题是,您还没有将models.py 文件迁移到数据库。在heroku 上运行python manage.py migrate,它应该可以正常工作。您不需要运行 python manage.py makemigrations,因为您应该已经在项目文件夹上进行了迁移。

【讨论】:

当我在 heroku 上尝试时出现错误:Warning: manage.py is not a heroku command. 然后Error: Run heroku help for a list of available commands 从 CMD 运行 heroku run python manage.py migrate。确保您位于正确的项目文件夹中,其中有 manage.py 文件。 说:no migrations to applyno changes detected。你会建议我回滚 heroku,到我要附加数据库的部分吗? 是的..试一试...您是否创建了超级用户并能够查看管理页面? 谢谢。我可以作为超级用户直接从管理页面添加博客文章,不幸的是本地管理员中的文章没有显示。 Heroku 出于某种原因无法读取它们。【参考方案2】:

好的,我解决了这个问题! 最初的问题是我在 Django 应用程序中本地创建的博客文章在我部署到 heroku 后没有显示。许多人认为这与迁移有关。是的,乍一看,但我真的说不出来。 因此,我决定放弃 Django 原生的默认 SQLite3(因为不建议将其用于生产)以获得更稳定的 PostgreSQL。 我将 SQLite 数据库转储到 PostgreSQL 并在部署到 heroku 时运行迁移。但是我仍然必须创建另一个超级用户,这意味着本地数据库仍然是本地的。所以我求助于备份数据库并按照here 的描述导入heroku。 然后我制作了一个 psql 转储文件:

pg_dump -Fc --no-acl --no-owner -h localhost -U myPSQLuserName myPSQLdb > mydb.dump

然后我在 AWS S3 服务上创建了一个存储桶,并在那里上传了“mydb.dump”,因为要让 PG Backups 访问和导入转储文件,您需要使用 HTTP 可访问的 URL 将其上传到某个地方。 然后我跑了:

heroku pg:backups:restore '<SIGNED URL>' DATABASE_URL

同时,我已在 AWS 存储桶菜单的“权限”中授予公共访问权限。在此之前遇到了一些问题。 然后我根据 AWS 的建议将此添加到我的 settings.py 中。在此之前我已经安装了 django-storages 和 boto3:

AWS_S3_FILE_OVERWRITTE = False 
AWS_DEFAULT_ACL = None 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

我加载了 heroku 应用程序,现在一切都很好。备份成功了。

【讨论】:

以上是关于Heroku 上的“'/blog/' 处的编程错误”的主要内容,如果未能解决你的问题,请参考以下文章

如何让我在 Heroku 上的 Laravel 项目使用 Heroku Postgres?

加快 Heroku 上的部署 [重复]

Heroku 上的 PSQLException

Heroku 上的 CodeIgniter 返回 404

Heroku 上的 Phoenix:错误 R10

Heroku 上的 Symfony:403 Forbidden 您无权访问此服务器上的 /