如何将PostgreSQL数据库从Heroku迁移至Railway?恢复遇错求助
Heroku PostgreSQL 迁移至 Railway 解决备份损坏问题
错误原因
你遇到的pg_restore: error: corrupt tar header found in PGDMP错误,大多是因为Heroku生成的备份文件并非标准tar格式,或者下载过程中文件损坏,直接用pg_restore读取会失败。
可行解决方案
方案一:直接用pg_dump转储(推荐)
跳过Heroku的备份工具,直接从Heroku数据库导出数据:
- 获取Heroku数据库的连接字符串:
heroku pg:credentials:url --app APP_NAME - 用
pg_dump将数据导出为SQL文件:pg_dump HEROKU_DATABASE_URL -f heroku_dump.sql - 导入到Railway数据库:
先获取Railway的PostgreSQL连接字符串,再执行:psql RAILWAY_DATABASE_URL -f heroku_dump.sql
方案二:修复已下载的Heroku备份文件
如果已经下载了备份文件,先检查是否为压缩格式:
- 查看文件类型:
file latest.dump - 如果显示是gzip压缩文件,先解压:
gzip -d latest.dump - 再用
pg_restore导入到Railway:pg_restore -d RAILWAY_DATABASE_URL latest.dump
注意事项
- 确保本地安装的
pg_dump/pg_restore版本,与Heroku、Railway使用的PostgreSQL版本尽量一致,避免版本不兼容导致的问题。 - 导入前可以先清空Railway数据库中的现有数据(如果需要),避免冲突。
内容的提问来源于stack exchange,提问作者Leon Vogler
相关产品推荐
相关产品推荐

