我使用Postgresql数据库在Heroku上托管了一个RoR应用程序,并且一直使用PG备份工具将数据库从我的应用程序备份到我的本地计算机上。由于应用程序仍处于开发阶段,因此从编程的角度来看,它可以帮助我降低同事们对数据库所做的更改。我已成功使用PG备份捕获和恢复数月,但最近,当我运行我的典型命令时,如下所示:
$curl -o latest.dump `heroku pgbackups:url --app XXXXX`
$pg_restore --verbose --clean --no-acl --no-owner -h localhost -U XXXXX -d XXXXX_development latest.dump
我在curl命令经过后收到此错误:
-bash: pg_restore: command not found
有关为何发生这种情况的任何想法?显然问题是我无法恢复下载的备份。
答案 0 :(得分:10)
听起来像是在本地环境中发生了变化,现在pg_restore
,与postgres捆绑在一起的客户端命令工具以及pg_dump和psql不可用。
听起来你需要正确设置你的PATH。
尝试使用pg_restore
在系统中找到正确的sudo find / -name pg_restore
,然后将其目录添加到PATH。
最后,您正在做的事情可以通过更简单的heroku pg:pull
完成,它从您的heroku数据库中获取备份并在一个命令中本地恢复它(但也使用pg_dump / pg_restore,所以那些需要也可以。