首页 > 解决方案 > heroku 上的 Django 部署抛出 django.db.utils.OperationalError: no such table: auth_user

问题描述

我正在部署一个免费的 Heroku dyno。

这是我的 Procfile:

release: python manage.py migrate
web: gunicorn app.wsgi --log-file -

我已经在本地进行了迁移,并且正在通过 Github 进行部署。我发现该行release: python manage.py migrate确实在测功机上运行命令但没有创建表(我已经通过使用我的测功机的命令行确认了这一点,heroku run bash然后检查文件中是否有任何表db.sqlite3。没有。我migrate使用 Heroku bash 重新运行命令,然后表格被填充到db.sqlite3文件中。我退出控制台,重新加载我的应用程序并尝试再次登录,但它再次抛出相同的错误:django.db.utils.OperationalError: no such table: auth_user我再次登录 Heroku bash 并看到我在db.sqlite3文件中创建的表不再存在。

标签: pythondjangosqliteherokudjango-manage.py

解决方案


Heroku 使用临时文件系统。由于 SQLite 作为文件存储在项目文件夹中,因此您不能期望它永久存在。只有项目文件将保持不变。您的代码创建的任何文件都将定期删除(最多 24 小时)任何类型的存储都应使用 S3 完成(对于静态文件)。对于数据库,你应该使用heroku提供的数据库服务(我使用Postgres)。


推荐阅读