在Heroku上无法进行pg_restore:"无法从输入文件读取:文件结束"[英] Cant pg_restore on Heroku: "could not read from input file: end of file"

本文是小编为大家收集整理的关于在Heroku上无法进行pg_restore:"无法从输入文件读取:文件结束"的处理方法,想解了在Heroku上无法进行pg_restore:"无法从输入文件读取:文件结束"的问题怎么解决?在Heroku上无法进行pg_restore:"无法从输入文件读取:文件结束"问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试使用 pg_dump/pg_restore 实用程序将我的本地 PostgreSQL 数据库复制到 Heroku 应用程序.按照 Heroku 的官方指南进行操作:https://devcenter.heroku.com/articles/heroku-postgres-import-export

所以,我已经完成了转储:
pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump

然后我将它上传到一个可通过网络服务器访问的服务器上(它确实是可访问的,我检查了它是否使用 wget 下载文件并 pg_restore 运行它 - 工作正常).

然后我尝试在 Heroku 上恢复但没有运气:

kulver@kvb:~/projects/gop/gop_flask$ heroku pg:backups restore 'MY_URL_HERE' postgresql-corrugated-15763
r010 ---restore---> DATABASE
An error occurred and your backup did not finish.

Please run `heroku pg:backups info r010` for details.

以下是详细信息:

kulver@kvb:~/projects/gop/gop_flask$ heroku pg:backups info r010
=== Backup info: r010

Database:    BACKUP
Started:     2016-03-26 20:15:32 +0000
Finished:    2016-03-26 20:15:32 +0000
Status:      Failed
Type:        Manual
Backup Size: 23.9MB
=== Backup Logs
... a bunch of logs here ...
2016-03-26 20:15:32 +0000: pg_restore: processing data for table "cards"
2016-03-26 20:15:32 +0000: waiting for restore to complete
2016-03-26 20:15:32 +0000: pg_restore: [custom archiver] could not read from input file: end of file
2016-03-26 20:15:32 +0000: restore done
2016-03-26 20:15:32 +0000: waiting for download to complete
2016-03-26 20:15:32 +0000: download done

我试图重新制作转储文件,重新加载它 - 同样的错误.怎么了?为什么我可以在刚刚创建的数据库上下载它并从中恢复,而不是在 Heroku 上?

感谢您的建议.

推荐答案

我无法按照上述方式加载转储,但是我找到了另一个对我来说很好的解决方案:

以简单的 SQL 格式进行转储:
pg_dump --no-owner mydb > mydb.dump

您可能需要切换到有权访问您的数据库的用户,例如 postgres.所以,sudo su postgres 然后进行转储.

然后用 psql 工具加载它:
user@pc:~/path/to/your/dump$ heroku pg:psql < mydb.dump

本文地址:https://www.itbaoku.cn/post/1763850.html