Django CRM本地PostgreSQL数据无法同步至Heroku PostgreSQL求助
解决本地PostgreSQL数据同步到Heroku PostgreSQL的问题
核心原因
Heroku上的PostgreSQL数据库和本地实例完全独立,执行migrate仅同步表结构,不会自动迁移本地已有的业务数据。
具体操作步骤
1. 导出本地数据库数据
在本地终端执行命令,将数据导出为SQL文件:
# 导出全库数据(推荐,避免遗漏关联数据) pg_dump -d 本地数据库名 -U 本地数据库用户名 > local_data.sql # 仅导出students表数据 pg_dump -d 本地数据库名 -U 本地数据库用户名 -t public.students > students_data.sql
执行时输入本地数据库密码即可生成对应SQL文件。
2. 导入数据到Heroku数据库
使用Heroku CLI直接执行导入命令:
# 导入全库数据 heroku pg:psql -a Heroku应用名 < local_data.sql # 仅导入students表数据 heroku pg:psql -a Heroku应用名 < students_data.sql
若未安装Heroku CLI,也可通过Heroku控制台的数据库页面,找到「Import/Export」选项上传SQL文件完成导入。
3. 验证数据有效性
导入完成后重启Heroku应用刷新缓存:
heroku restart -a Heroku应用名
之后访问Heroku上的Django Admin,检查students表数据是否同步成功。
后续优化方案
如果需要频繁同步数据,推荐使用Django的fixtures功能:
# 本地导出为Django兼容的fixture格式 python manage.py dumpdata app_name.Student --indent 2 > students_fixture.json # 上传到Heroku后执行导入 heroku run python manage.py loaddata students_fixture.json -a Heroku应用名
这种方式更贴合Django生态,适合结构化的数据同步场景。
内容的提问来源于stack exchange,提问作者Bramboox
相关产品推荐
相关产品推荐

