heroku pg:不从heroku数据库中取表

时间:2014-08-28 07:38:59

标签: heroku windows-7 postgresql-9.3 heroku-toolbelt heroku-postgres

我尝试使用heroku bash命令将heroku数据库拉到我的本地Windows计算机

heroku pg:pull HEROKU_POSTGRESQL_COLOR mydatabase --app appname

当我在命令上运行时,我收到以下错误:

  

' ENV'不被识别为内部或外部命令,可操作程序或批处理文件。

但是创建了本地数据库'mydatabase',但没有任何表。

我的heroku应用程序的数据库中有一个表,但它没有被拉到我的本地数据库。

帮我解决一下。

2 个答案:

答案 0 :(得分:2)

一些事情:

1.当出现“'env'未被识别为内部或外部命令,可操作程序或批处理文件”的错误时,表示系统正在尝试执行名为env的命令。这与设置环境变量无关。

Env不是Windows中的命令,而是unix中的命令。我知道你有一台Windows机器。你可以做的是运行“git bash”。 (你可以单独使用它,但它带有Heroku的CLI)。

这为您提供了一个类似于unix的环境,其中支持“env”命令,然后您可以运行实际的heroku pg:pull命令。

2.如果仍然无效,有一种解决方法可行,无需安装任何额外的东西。实际上这是基于我提交给Heroku的一张票,所以我只是引用他们的回复:

“pg:push命令只是pg_dumppg_restore命令的包装。由于您遇到的错误,听起来我们应该继续手动执行操作。使用cmd运行这些命令.exe(您首先报告错误的命令提示符应用程序)。首先从您的heroku应用程序配置变量中获取连接字符串。

heroku config:get DATABASE_URL

然后,您要从连接字符串中选择username / hostname / databasename部分,即:postgres:// username:password @ hostname:port / databasename。在以下命令中使用这些变量,并在提示输入密码时粘贴密码。这将转储heroku数据库的内容以获取本地文件。

pg_dump --verbose -F c -Z 0 -U username -h hostname -p port databasename > heroku.dump

接下来,您将此文件加载到本地数据库中。 CLI在运行此命令之前执行的一件事是检查并确保目标数据库为空,因为要使用真实数据对数据库运行此操作是您要避免的,因此请小心使用pg_restore。手动运行此操作时,您可能会在没有CLI检查的情况下破坏数据的风险,因此您可能需要先手动验证目标数据库是否为空。

pg_restore --verbose --no-acl --no-owner  -h localhost -p 5432 -d mydb2 < heroku.dump

对不起,这不是更好的经历,我希望这会帮助你取得进步。我们正在重写我们的pg命令,以便它们在包括窗口在内的所有平台上都能更好地工作,但是没有可靠的时间表来确定它何时完成。“

答案 1 :(得分:0)

首先在heroku中进行转储文件备份,你需要备份插件,安装..

$heroku addons:add pgbackups

然后运行以下命令将以最新的名称为您提供转储文件

$ heroku pgbackups:capture
$ curl -o latest.dump `heroku pgbackups:url`

 wget "`heroku pgbackups:url --app app-name`" -O backup.dump

已编辑:(与用户聊天后)

  

问题:'env'未被识别为内部或外部命令,可操作程序或批处理文件。!

我怀疑某个程序的PATH变量之一搞砸了。您可以双击并在WINDOWS\system32文件夹中查看。

好的,如何编辑:

  1. 我的电脑&gt;高级&gt;环境变量
  2. 然后选择PATH并单击编辑按钮