我尝试使用heroku bash命令将heroku数据库拉到我的本地Windows计算机
heroku pg:pull HEROKU_POSTGRESQL_COLOR mydatabase --app appname
,
当我在命令上运行时,我收到以下错误:
' ENV'不被识别为内部或外部命令,可操作程序或批处理文件。
但是创建了本地数据库'mydatabase'
,但没有任何表。
我的heroku应用程序的数据库中有一个表,但它没有被拉到我的本地数据库。
帮我解决一下。
答案 0 :(得分:2)
一些事情:
1.当出现“'env'未被识别为内部或外部命令,可操作程序或批处理文件”的错误时,表示系统正在尝试执行名为env的命令。这与设置环境变量无关。
Env不是Windows中的命令,而是unix中的命令。我知道你有一台Windows机器。你可以做的是运行“git bash”。 (你可以单独使用它,但它带有Heroku的CLI)。
这为您提供了一个类似于unix的环境,其中支持“env”命令,然后您可以运行实际的heroku pg:pull命令。
2.如果仍然无效,有一种解决方法可行,无需安装任何额外的东西。实际上这是基于我提交给Heroku的一张票,所以我只是引用他们的回复:
“pg:push命令只是pg_dump
和pg_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
文件夹中查看。
好的,如何编辑: