Mik*_*kin 5 postgresql heroku heroku-postgres
我正在尝试使用pg_dump/ pg_restoreutils 将本地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
然后,我将其上传到整个Web服务器上的可达文件中(并且它确实可达,我检查了它是否可以下载文件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.
Run Code Online (Sandbox Code Playgroud)
详细信息如下:
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
Run Code Online (Sandbox Code Playgroud)
我试图重新制作转储文件,重新加载它-同样的错误。怎么了?为什么我可以在刚创建的数据库上下载它并从中还原,但不能在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
小智 5
文件的管道传输似乎存在问题。我使用 -f 命令创建转储来指定文件,这解决了我的问题。
pg_dump -f mydb.dump -Fc --no-acl -no-owner -h localhost -U myUser --schema=public myDatabase
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6062 次 |
| 最近记录: |