You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:18:03