Django deployment on heroku throws django.db.utils.OperationalError: no such table: auth_user
Django deployment on heroku throws 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
行确实在 dyno 上运行命令但没有创建表(我已经通过使用 heroku run bash
进入我的 Dyno 的命令行确认了这一点,然后检查是否有是 db.sqlite3
文件中的任何表格。有 none。我使用 Heroku bash 重新运行 migrate
命令,然后表格被填充到 db.sqlite3
文件。我退出控制台,重新加载我的应用程序并尝试再次登录,但它再次抛出相同的错误:django.db.utils.OperationalError: no such table: auth_user
。我再次登录 Heroku bash 并看到我已经在 db.sqlite3
文件中创建的文件不再存在。
Heroku 使用临时文件系统。
由于 SQLite 作为文件存储在项目文件夹中,您不能期望它永久存在。
只有项目文件将保持不变。
您的代码创建的任何文件都将定期删除(最多 24 小时)
任何类型的存储都应该使用 S3 来完成(对于静态文件)。
对于数据库,你应该使用heroku提供的数据库服务(我用的是Postgres)。
我正在免费的 Heroku dyno 上部署。
这是我的 Procfile:
release: python manage.py migrate
web: gunicorn app.wsgi --log-file -
我已经在本地进行了迁移,并且正在通过 Github 进行部署。我发现 release: python manage.py migrate
行确实在 dyno 上运行命令但没有创建表(我已经通过使用 heroku run bash
进入我的 Dyno 的命令行确认了这一点,然后检查是否有是 db.sqlite3
文件中的任何表格。有 none。我使用 Heroku bash 重新运行 migrate
命令,然后表格被填充到 db.sqlite3
文件。我退出控制台,重新加载我的应用程序并尝试再次登录,但它再次抛出相同的错误:django.db.utils.OperationalError: no such table: auth_user
。我再次登录 Heroku bash 并看到我已经在 db.sqlite3
文件中创建的文件不再存在。
Heroku 使用临时文件系统。 由于 SQLite 作为文件存储在项目文件夹中,您不能期望它永久存在。 只有项目文件将保持不变。 您的代码创建的任何文件都将定期删除(最多 24 小时) 任何类型的存储都应该使用 S3 来完成(对于静态文件)。 对于数据库,你应该使用heroku提供的数据库服务(我用的是Postgres)。