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

为何本地PostgreSQL迁移至Heroku Postgres操作失败?

问题解决方法

一、heroku pg:backups:restore 报错修复

报错核心原因是Windows命令行环境下,URL的包裹符号和特殊字符处理逻辑和Linux/macOS不同,导致传给Heroku的预签名URL被截断,Heroku请求S3返回400错误,拿到的是空备份文件,触发pg_restore: could not read from input file: end of file报错。
修复步骤:

  • 替换命令中的单引号为双引号:Windows的CMD、PowerShell均不识别单引号作为字符串包裹符,会把URL中的&符号识别为命令分隔符,截断完整URL,正确命令格式如下:
heroku pg:backups:restore "RAW_SIGNED_URL" -a fivteam2 DATABASE_URL
  • 如果替换双引号后仍报错,需对URL中的特殊字符转义:CMD中把&替换为^&,PowerShell中把&替换为`&,再执行命令即可。
  • 额外校验项:确认S3存储桶没有配置额外的IP访问限制、CORS规则允许GET请求即可,你本地可以正常下载预签名URL文件,说明预签名的权限、有效期配置均无问题。

二、heroku pg:push 报错修复

你遇到的报错有两个原因:

  1. 命令拼写错误:正确命令是heroku pg:push,不是heroku pug:push
  2. Windows下未临时配置PG相关环境变量,修复方法:
  • 运行CMD的情况下,先执行临时变量配置命令:
set PGUSER=你的本地PostgreSQL用户名
set PGPASSWORD=你的本地PostgreSQL密码
set PGHOST=localhost
  • 运行PowerShell的情况下,先执行临时变量配置命令:
$env:PGUSER = "你的本地PostgreSQL用户名"
$env:PGPASSWORD = "你的本地PostgreSQL密码"
$env:PGHOST = "localhost"

配置完成后,再执行heroku pg:push mydatabase DATABASE_URL -a myapp即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:09:03