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

求助:Heroku上Django应用数据库表被删除,使用Cloudinary与SQLite

Heroku上Django应用SQLite数据库表丢失问题的解决办法

问题根源

Heroku的dyno采用临时文件系统,只要应用发生重启、dyno缩放或者休眠唤醒,本地存储的所有文件(包括SQLite的.db数据库文件)都会被重置为部署时的初始状态。Cloudinary存储静态文件的配置不影响数据库,因为SQLite是本地文件型数据库,完全不匹配Heroku的无状态运行环境。

可行解决方案

1. 切换到Heroku PostgreSQL(优先推荐)

  • 通过Heroku控制台给应用添加PostgreSQL插件,或者用命令行操作:
    heroku addons:create heroku-postgresql:hobby-dev
    
  • 修改Django项目的settings.py,读取Heroku自动注入的数据库环境变量:
    import dj_database_url
    DATABASES = {
        'default': dj_database_url.config(default='postgres://localhost/mydb')
    }
    
  • 确保requirements.txt中包含dj-database-url依赖:
    dj-database-url>=0.5.0
    
  • 执行数据库迁移,同步表结构到新数据库:
    heroku run python manage.py migrate
    

2. 改用第三方远程数据库

如果不想用Heroku自带的PostgreSQL,也可以选择AWS RDS、Google Cloud SQL等远程数据库服务,只需在settings.py中将数据库配置指向远程数据库的连接地址,保证数据存储在持久化的远程服务器上。

关键提醒

  • 生产环境下绝对不要在Heroku上使用SQLite,它的本地文件存储特性和Heroku的临时文件系统存在根本性冲突。
  • 迁移数据库前务必备份现有数据(如果有),防止数据丢失。

内容的提问来源于stack exchange,提问作者UNK30WN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:05:35