Heroku无法连接Django项目默认sqlite3数据库问题求助
Heroku无法连接SQLite3数据库的解决方法
首先明确核心限制:Heroku的文件系统是临时易失的,不支持持久化存储SQLite数据库文件。每次应用部署、重启或者每24小时的平台例行滚动后,所有写入到本地文件的内容都会被重置,且Heroku默认不会适配本地SQLite的连接逻辑,这是你遇到连接问题的根本原因,也不建议你尝试在Heroku上强行使用SQLite,会有数据丢失的风险。
你当前提交的配置逻辑本身是正确的,只要按照以下步骤调整即可正常使用:
- 登录Heroku控制台,进入对应项目的「Resources」页面,搜索添加官方附加组件
Heroku Postgres,可选择免费的Mini方案完成开通 - 不需要额外修改你现有的
settings.py代码,dj_database_url.config()会自动读取Heroku运行环境内置的DATABASE_URL变量,自动配置PostgreSQL连接参数,django_heroku也会自动完成生产环境的其他适配工作 - 代码部署完成后,在Heroku项目页的「More」下拉菜单中选择「Run console」,执行命令
python manage.py migrate初始化数据库表结构,之后即可正常访问
如果需要保留本地开发时使用SQLite的习惯,可以修改配置增加环境判断,避免本地开发受影响,参考配置如下:
import os import django_heroku import dj_database_url ALLOWED_HOSTS = ['*'] # 判断是否运行在Heroku环境中(Heroku内置DYNO环境变量) if os.getenv('DYNO'): DATABASES = { 'default': dj_database_url.config() } else: # 本地开发使用默认SQLite配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } django_heroku.settings(locals())
内容的提问来源于stack exchange,提问作者usef
相关产品推荐
相关产品推荐

