python - 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
文件中创建的表不再存在。
解决方案
Heroku 使用临时文件系统。由于 SQLite 作为文件存储在项目文件夹中,因此您不能期望它永久存在。只有项目文件将保持不变。您的代码创建的任何文件都将定期删除(最多 24 小时)任何类型的存储都应使用 S3 完成(对于静态文件)。对于数据库,你应该使用heroku提供的数据库服务(我使用Postgres)。
推荐阅读
- android - Activity退出和进入动画问题
- node.js - 让网页在网络服务器上运行?
- java - 在 JsonArray 中为 JSON PATH 获取一个数组
- python - 从余弦相似度矩阵 Pandas 数据帧中去除重复数据
- java - 如何在spring中使用一个函数保存多行数据
- javascript - 一次运行javascript的功能
- amazon-web-services - 如何使用 AWS S3 上的文件制作 RDS 实例?
- r - 为什么 R 和 Matlab 中的差距统计结果不同?
- php - 邮递员在邮递员中发布后不返回值?
- android - StartService 方法已执行,但 Service 事件未触发