2016-04-29 24 views
0

问题已经接近herehere,但没有任何结果让我工作。Heroku从本地数据库恢复与pg:备份与“错误:必须是扩展plpgsql的所有者”

我按照Heroku文档中的要求备份。

pg_dump -Fc --no-acl --no-owner --no-privileges -h [HOST] -U [DB_USER] [DB_NAME] > backup.dump 

当我恢复像这样(该文件的大小是〜100MB):

heroku pg:backups --app [APP_NAME] restore 'https://[DUMP_URL]' [HEROKU_DATABASE_URL] 

我收到一条错误信息上载的进展后,停在19.4MB和日志状态:

$ heroku pg:backups --app [APP_NAME] info r081 
=== Backup info: r081 
Database: BACKUP 
Started:  2016-04-29 10:10:37 +0000 
Finished: 2016-04-29 10:11:31 +0000 
Status:  Failed 
Type:  Manual 
Backup Size: 19.4MB 
=== Backup Logs 
2016-04-29 10:10:39 +0000: pg_restore: connecting to database for restore 
2016-04-29 10:10:41 +0000: pg_restore: creating SCHEMA public 
2016-04-29 10:10:41 +0000: pg_restore: creating EXTENSION plpgsql 
2016-04-29 10:10:41 +0000: pg_restore: creating COMMENT EXTENSION plpgsql 
2016-04-29 10:10:41 +0000: pg_restore: [archiver (db)] Error while PROCESSING TOC: 
2016-04-29 10:10:41 +0000: pg_restore: [archiver (db)] Error from TOC entry 2474; 0 0 COMMENT EXTENSION plpgsql 
2016-04-29 10:10:41 +0000: pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql 
2016-04-29 10:10:41 +0000: Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; 
2016-04-29 10:10:41 +0000: 
2016-04-29 10:10:41 +0000: 
2016-04-29 10:10:41 +0000: 
2016-04-29 10:10:41 +0000: pg_restore: creating SEQUENCE answer_seq 
[...] 
2016-04-29 10:10:48 +0000: pg_restore: executing SEQUENCE SET category_seq 
2016-04-29 10:10:49 +0000: pg_restore: processing data for table "file" 
2016-04-29 10:11:31 +0000: out of memory 
2016-04-29 10:11:31 +0000: waiting for restore to complete 
2016-04-29 10:11:31 +0000: restore done 
2016-04-29 10:11:31 +0000: waiting for download to complete 
2016-04-29 10:11:31 +0000: download done 

我首先想到这可能是由于包含BLOBS的表文件。但我似乎无法理解为什么它应该是一个问题。最大的文件是4MB。 这些日志还表明,只有19.4的100MB已导入。

我使用Heroku的工具区以下版本:

heroku-toolbelt/3.43.0 (x86_64-linux-gnu) ruby/2.1.5 
heroku-cli/4.30.0-2dfc0f4 (amd64-linux) go1.6.2 
=== Installed Plugins 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
heroku-pg-extras 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
+0

你在尝试使用'pg:push'之前去手动转储,恢复方式?如果这两者都不起作用,那么我现在可以考虑的唯一解决方法是以默认明文模式转储并在恢复之前手动删除违规的语句。 – janfoeh

+0

转储是本地的,但原始数据库位于我无法执行Heroku toolbelt的环境中。据我所知,pg:push依赖于事实,即数据库是本地的,我不能指定远程主机。 – Steven

+0

这看起来也适合我。如何在本地恢复转储,然后运行'pg:push'?如果您在本地还原过程中遇到同样的问题,请[本答案](http://stackoverflow.com/questions/10169203/postgresql-9-1-pg-restore-error-regarding-plpgsql/11776053#11776053)应该有你覆盖。 – janfoeh

回答