我有一个需要上传到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
谢谢!
答案 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