Heroku pg:push psql: FATAL: 用户密码验证失败

NA *_*ers 6 postgresql heroku heroku-postgres

我知道有人问过类似的问题,但没有一个解决方案有效。我正在尝试将我的本地数据库推送到我的 Heroku 数据库,并且我不断收到 psql: FATAL: 用户“windows 用户名”的密码身份验证失败。

我在 Windows 上,所以我尝试了 SET PGUSER=postgres SET PGPASSWORD=password

然后运行 ​​heroku pg:push localdb DATABASE_URL --app herokuapp

但我仍然收到这个愚蠢的密码错误。问题是它看起来仍然使用我的 Windows 用户名而不是 postgres 用户名......我该如何解决这个问题?

NA *_*ers 6

感谢 Heroku 的支持,我终于能够让它发挥作用。所以对于 Windows 用户,这些是步骤:

首先,您要将本地数据库转储到转储文件中:

pg_dump --verbose -F c -Z 0 -U postgres -h localhost -p 5432 yourdbname > local.dump
Run Code Online (Sandbox Code Playgroud)

然后你想从你的 heroku 应用程序配置变量中获取连接字符串:

heroku config:get DATABASE_URL
Run Code Online (Sandbox Code Playgroud)

然后你想从连接字符串中挑选出用户名/主机名/数据库名部分,即:postgres://用户名:密码@主机名:端口/数据库名 一个警告,对具有真实数据的生产数据库运行这个是你想要的避免使用 pg_restore 时要小心。手动运行时,您可能会在没有 CLI 检查的情况下损坏数据,因此您可能需要先手动验证目标数据库是否为空。

pg_restore --verbose --no-acl --no-owner -U username -h hostname -p 5432 -d databasename < local.dump
Run Code Online (Sandbox Code Playgroud)

然后当提示输入密码时,只需粘贴连接字符串中的密码

  • 我遇到“&lt;”运算符被保留以供将来使用。已尝试使用“|”而不是“&lt;”以及“-f”。它们都不起作用。有什么建议的解决方法吗?我在 VS Code 上使用 Powershell。 (2认同)