【问题标题】:Django error on admin site entry when deployed on Heroku在 Heroku 上部署时管理站点条目上的 Django 错误
【发布时间】:2019-01-13 22:01:05
【问题描述】:

过去我曾成功地使用 django-heroku 包在 here 上托管了一个网站,但现在当我尝试运行一个 Django 项目的基本 shell 作为一个新项目的开始时,我受到了打击以下错误信息:

ProgrammingError at /admin/login/
relation "auth_user" does not exist
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...
                                                             ^
Request Method: POST
Request URL:    https://hockamer2018.herokuapp.com/admin/login/?next=/admin/
Django Version: 2.1
Exception Type: ProgrammingError
Exception Value:    
relation "auth_user" does not exist
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...
                                                             ^
Exception Location: /app/.heroku/python/lib/python3.6/site-                
packages/django/db/backends/utils.py in _execute, line 85
Python Executable:  /app/.heroku/python/bin/python
Python Version: 3.6.6
Python Path:    
['/app/.heroku/python/bin',
 '/app',
 '/app/.heroku/python/lib/python36.zip',
 '/app/.heroku/python/lib/python3.6',
 '/app/.heroku/python/lib/python3.6/lib-dynload',
 '/app/.heroku/python/lib/python3.6/site-packages']

当我在本地运行它时它运行良好,所以我一定忘记在 Heroku 上的数据库上设置一些东西。我已经彻底研究了这个问题,所有的修复似乎都在运行 python manage.py makemigrations python manage.py 迁移 但我通过 heroku 远程 ssh 和“heroku run”命令都无济于事。

我正在运行一个全新的 Django 安装,我所做的只是将两个 django-heroku 行添加到 settings.py。我在 django-2.0.8 和 2.1 上都试过这个。

【问题讨论】:

  • “当我在本地运行时它运行良好,所以我一定忘记在 Heroku 上的数据库上设置一些东西了。”——是的,这可能就是发生了什么。您是否在 Heroku 上运行过迁移? (请注意,您不应该在 Heroku 上运行 makemigrations。这会创建 迁移,并且只应在开发中完成,当您打算更改数据库时。这将生成需要提交并推送到 Heroku 的迁移文件。但是您应该运行 migrate,它会针对您的数据库运行迁移。)
  • 太棒了,谢谢,这是我的问题,我尝试运行只是迁移,这次成功了。

标签: python django heroku


【解决方案1】:

我刚刚解决了这个问题,我发现你必须通过 heroku cli 进行一些操作,尤其是在涉及到你的数据库时,

首先,您要确保您的 requirements.txt 是最新的,以便可以创建模型中依赖于任何第三方应用程序的任何字段(例如 models.ImageField 依赖于枕头)。

运行以下命令并确保在提交更改时,它会检测迁移中的更改(如果有):

python manage.py makemigrations
git add .
git commit -m "message"
git push heroku master

heroku run python manage.py migrate
heroku run python manage.py createsuperuser

最后两行代码负责解决您的问题。我的猜测是,默认情况下,heroku 不会跟踪对您的 db.sqlite 所做的更改(如 .gitignore 中所定义),因此它不会运行 migrate 行,因此您需要手动执行此操作,以便在部署时不会t 检测您之后创建的表。希望这对您有所帮助。

【讨论】:

    猜你喜欢
    • 2021-05-27
    • 2015-04-28
    • 2016-12-21
    • 2015-09-09
    • 2021-12-26
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多