在Heroku上部署时,管理站点条目上的Django错误

时间:2018-08-06 21:56:17

标签: python django heroku

过去,我成功使用概述为here的django-heroku软件包托管了一个网站,但是现在当我尝试仅运行Django项目的基本外壳作为新项目的开始时,遇到以下错误消息:

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上都尝试过。

1 个答案:

答案 0 :(得分:0)

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

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

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

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中所定义),因此它不会运行迁移行,因此您需要手动执行此操作,因此在部署它时不会这样做。 t检测您之后创建的表。希望这对您有帮助。