0
问题已经接近here和here,但没有任何结果让我工作。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]
你在尝试使用'pg:push'之前去手动转储,恢复方式?如果这两者都不起作用,那么我现在可以考虑的唯一解决方法是以默认明文模式转储并在恢复之前手动删除违规的语句。 – janfoeh
转储是本地的,但原始数据库位于我无法执行Heroku toolbelt的环境中。据我所知,pg:push依赖于事实,即数据库是本地的,我不能指定远程主机。 – Steven
这看起来也适合我。如何在本地恢复转储,然后运行'pg:push'?如果您在本地还原过程中遇到同样的问题,请[本答案](http://stackoverflow.com/questions/10169203/postgresql-9-1-pg-restore-error-regarding-plpgsql/11776053#11776053)应该有你覆盖。 – janfoeh