10

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

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

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

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

Retrieving... done

 !    An error occurred and your restore did not finish.

这是日志中的错误(由Toby Hede 的问题提供):

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

4 回答 4

17

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

于 2013-01-09T20:34:09.123 回答
6

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

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

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

于 2014-08-25T13:17:09.897 回答
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
于 2013-01-09T20:26:00.757 回答
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
于 2013-09-06T13:59:58.073 回答