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

如何将本地SQLite数据库与Heroku上的Postgres数据库双向同步?

嘿,这个问题我之前帮朋友处理过,核心就是搞定SQLite和PostgreSQL之间的数据迁移,还要搭好日常双向同步的工作流。下面一步步来,保证你能搞定:

一、先把本地SQLite数据推送到Heroku Postgres

这一步是解决你现在远程没有本地数据的问题:

  1. 导出本地SQLite数据
    打开终端,运行命令把本地数据库的结构和数据全部导出成SQL文件:

    sqlite3 db.sqlite3 .dump > local_data.sql
    

    注意把db.sqlite3换成你本地项目里实际的数据库文件名,导出的local_data.sql会保存在当前目录。

  2. 适配PostgreSQL语法
    SQLite和Postgres的语法有一些差异,手动修改SQL文件里的关键部分即可(数据量小的话很方便):

    • 把SQLite的AUTOINCREMENT替换成Postgres的GENERATED ALWAYS AS IDENTITY
    • 把布尔值的0/1改成false/true
    • 若用到datetime('now'),替换成Postgres的CURRENT_TIMESTAMP
      如果数据量大,推荐用pgloader工具自动处理语法转换,省不少事。
  3. 导入到Heroku Postgres

    • 先获取Heroku数据库的连接地址:
      heroku config:get DATABASE_URL
      
      复制返回的类似postgres://user:pass@host:port/dbname的链接。
    • 直接导入SQL文件:
      psql <刚才复制的DATABASE_URL> < local_data.sql
      
      或者用Heroku内置命令进入数据库终端后导入:
      heroku pg:psql
      # 进入终端后执行
      \i local_data.sql
      
    • 导入完成后可以验证,比如查询用户表:SELECT * FROM auth_user;,确认本地数据已同步到远程。
二、把Heroku Postgres数据拉取到本地SQLite

要把远程的更新同步回本地,用Heroku官方提供的命令就很简单:

heroku pg:pull DATABASE_URL local_db.sqlite3

这里的local_db.sqlite3是你本地要生成的数据库文件名,如果原来有同名文件会被覆盖,记得先备份本地原有数据库。执行完启动本地服务器,就能看到远程的数据了。

三、建立日常双向同步的工作流

为了避免每次手动折腾,给你整理一套日常开发的流程:

  • 开始本地开发前:先拉取远程最新数据,确保本地数据库和远程一致:
    heroku pg:pull DATABASE_URL db.sqlite3
    
  • 本地开发完成,准备部署到Heroku时:
    1. 先备份本地数据,以防迁移出问题:
      sqlite3 db.sqlite3 .dump > backup_local_$(date +%Y%m%d).sql
      
    2. 把本地数据推送到远程(推荐用pgloader自动处理语法):
      pgloader sqlite:///path/to/your/db.sqlite3 postgresql://<DATABASE_URL>
      
    3. 正常提交代码部署:
      git add . && git commit -m "update features and sync data" && git push heroku main
      
四、关键注意事项
  • 继续保持*.sqlite3在.gitignore里,绝对不要提交到Git!本地数据库属于个人开发环境,远程用的是Postgres,提交这个文件只会搞乱团队环境。
  • 每次迁移数据前一定要备份:远程可以用heroku pg:backups:capture创建备份,本地直接复制sqlite文件到其他文件夹即可。
  • 若遇到导入报错,优先排查语法差异,比如字段类型、约束写法的不同,慢慢调整就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:14:04