我知道有类似的问题已被提出,但没有一个解决方案有效。我正在尝试将我的本地数据库推送到我的Heroku数据库,并且我不断获取psql:致命错误:用户的密码身份验证失败" windows用户名"。
我在Windows上,所以我尝试了SET PGUSER = postgres SET PGPASSWORD = password
然后运行heroku pg:push localdb DATABASE_URL --app herokuapp
但我仍然得到这个愚蠢的密码错误。事情是它仍然看起来它使用我的Windows用户名而不是postgres用户名....我该如何解决这个问题?
答案 0 :(得分:1)
感谢Heroku的支持,我终于能够让它工作了。因此对于Windows用户来说,这些步骤是:
首先,您要将本地数据库转储到转储文件中:
pg_dump --verbose -F c -Z 0 -U postgres -h localhost -p 5432 yourdbname > local.dump
然后你想从你的heroku应用程序配置变量中获取连接字符串:
heroku config:get DATABASE_URL
然后你要从连接字符串中选择用户名/主机名/数据库名称部分,即:postgres:// username:password @ hostname:port / databasename 一个警告,使用真实数据对生产数据库运行此操作是您要避免的,因此请小心使用pg_restore。手动运行此操作时,您可能会在没有CLI检查的情况下破坏数据,因此您可能需要先手动验证目标数据库是否为空。
pg_restore --verbose --no-acl --no-owner -U username -h hostname -p 5432 -d databasename < local.dump
然后,当提示输入密码时,只需粘贴连接字符串中的密码
即可答案 1 :(得分:0)
我刚刚遇到了完全相同的问题,并成功解决了这个问题。 与其使用单行“ heroku pg:push”命令(不带/不带用户名/密码),我而是依靠两步操作: 步骤1:pg_dump 步骤2:pg_restore
上面https://stackoverflow.com/users/4051445/na-peters所指出的 以及Heroku简要提示的以下信息: https://devcenter.heroku.com/articles/heroku-postgresql#pg-psql
关键是输入的密码不是访问本地Postgresql数据库时要使用的密码。相反,密码是一个64个字符的字符串,您将从以下字符串中获取: heroku config:获取DATABASE_URL -a
要提取它,请遵循上面的NA Peters的指示(它是postgres:// xxxxxxx:yyyyyyyyyyyyyyyyyyyy @ hhhhhh:5432 / dddddd中:和@之间的y字符串。 期望它能工作
答案 2 :(得分:0)
对于那些在还原过程中苦苦挣扎的 Windows PowerShell 人员,请尝试:
Get-Content -raw local.dump | pg_restore -F c --verbose --no-acl --no-owner -U <username> -h <hostname> -p 5432 -d <databasename>
然后在提示时粘贴密码。
答案 3 :(得分:0)
SET PGUSER=postgres
。这很重要,否则 heroku 将使用不同的用户,您的密码将无法使用。heroku pg:push localdb DATABASE_URL --app herokuapp
postgres
的密码。