如何在Heroku部署Django应用后恢复Sqlite数据库数据
操作前置说明
- Heroku采用临时文件系统,应用重启、重新部署、dyno实例休眠回收时,所有写入磁盘的文件都会被清空。SQLite为文件型数据库,写入的新数据会在上述场景下丢失,该方案仅适用于临时测试,生产环境建议更换为Heroku提供的PostgreSQL数据库服务。
恢复操作步骤
方案1:使用Django原生数据导入导出(推荐,适配所有数据库类型)
该方案适用于你手里的dump是Django dumpdata 命令导出的json格式文件,如果你还未生成本地dump,先在本地项目目录执行:python manage.py dumpdata > data_dump.json
后续操作流程:
- 将生成的
data_dump.json放在Django项目根目录,提交代码到Heroku
git add data_dump.json git commit -m "添加本地数据导出文件" git push heroku main
- 先确保远程数据库表结构和本地一致,执行迁移命令:
heroku run python manage.py migrate - 执行数据导入:
heroku run python manage.py loaddata data_dump.json - 验证数据:可以进入Heroku远程shell查询确认
heroku run python manage.py shell
方案2:直接使用本地SQLite数据库文件
如果你手里的dump是完整的db.sqlite3原文件:
- 将
db.sqlite3放在项目根目录,和你本地Django配置的数据库路径保持一致 - 提交文件到Heroku即可,当前部署版本可以直接读取该文件内的所有数据
注意:该方式下所有后续新增的数据都不会持久化,应用重启后数据会恢复为你提交时的
db.sqlite3版本内容。
内容的提问来源于stack exchange,提问作者Atif Shafi
相关产品推荐
相关产品推荐

