heroku pgbackups:restore:转储格式无效

时间:2013-01-09 16:07:49

标签: postgresql heroku psql pg-dump heroku-toolbelt

我有一个需要上传到heroku的本地psql数据库转储。我按照this link的更新部分中的步骤操作。一切正常,直到最后一部分,实际的上传步骤:

  

heroku pgbackups:restore --app myAppName DATABASE   'https://www.dropbox.com/myAppPSQLDumpLink/myAppName_local.dump' - 确认myAppName

这是控制台中显示的内容:

HEROKU_POSTGRESQL_SILVER_URL (DATABASE_URL)  <---restore---  myAppName_local.dump

Retrieving... done

 !    An error occurred and your restore did not finish.

这是日志中的错误(由Toby Hede's question提供):

2013-01-09T15:39:09+00:00 app[pgbackups]: Invalid dump format: /tmp/GgUz5yU4bF/project_mgr_development_local.dump: HTML document text

我尝试搜索此错误,但找不到答案。有谁知道要解决这个问题需要做些什么?我的本地psql数据库的实际转储是这样执行的:

pg_dump -Fc --no-acl --no-owner -U myUserName  > myAppName_local.dump

谢谢!

4 个答案:

答案 0 :(得分:17)

看起来Dropbox上的转储链接正在重定向或指向HTML页面(错误中的HTML文档文本)。访问该链接,确保您直接获得转储。或者在浏览器中下载转储,右键单击它并复制下载链接。该链接应该与pgbackups:restore。

一起使用

答案 1 :(得分:6)

Dropbox提供了直接下载文件的说明(https://www.dropbox.com/en/help/201) 这对于在pg_backups中使用dropbox链接很有帮助。

简而言之,它说下载链接选项“dl = 1”而不是“dl = 0”。但这对我不起作用。即使复制下载文件的地址也不适用于我。

如果您遇到上述问题,请尝试将文件移至公用文件夹并从中复制链接。这对我有用。

答案 2 :(得分:0)

根据Importing and Exporting Heroku Postgres Databases with PG Backups,您可以使用以下命令在终端恢复转储:

$ curl -o latest.dump `heroku pgbackups:url --app heroku_appname`
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump

答案 3 :(得分:0)

得到了同样的错误,但不同的原因,所以不同的解决方案。也许它有助于某人。

如果您已将转储文件存储在使用HTTPS的服务器中,并且您错误地将HTTP用于数据库URL,则转发将被解释为HTML文档。

所以改变

heroku pgbackups:restore --app myAppName DATABASE 'http://www.example.com/my.dump' --confirm myAppName

heroku pgbackups:restore --app myAppName DATABASE 'https://www.example.com/my.dump' --confirm myAppName