
私は postgres データベースを ninefold から heroku に移行しようとしています。
エクスポートに使用しているコマンドは次のとおりです。
PGPASSWORD=password pg_dump -h ipaddress -p port -U user -d database -Fc --no-acl --no-owner -x -O -N postgis > ninefold-backup.dump
次に S3 にアップロードし、次のコマンドを実行します。
heroku pg:backups restore 'https://s3-us-west-2.amazonaws.com/bucket/ninefold-backup.dump' DATABASE_URL -a app --confirm app
すると、heroku は次のように報告します:
An error occurred and your backup did not finish.
Please run `heroku pg:backups info r003` for details.
ログには次のようなエラーが表示されます。
2015-05-23 22:32:36 +0000: pg_restore: creating COMMENT EXTENSION xml2
2015-05-23 22:32:36 +0000: pg_restore: [archiver (db)] Error from TOC entry 5157; 0 0 COMMENT EXTENSION xml2
2015-05-23 22:32:36 +0000: pg_restore: [archiver (db)] could not execute query: ERROR: extension "xml2" does not exist
2015-05-23 22:32:36 +0000: Command was: COMMENT ON EXTENSION xml2 IS 'XPath querying and XSLT';
2015-05-23 22:32:36 +0000: pg_restore: processing data for table "spatial_ref_sys"
2015-05-23 22:32:36 +0000: pg_restore: [archiver (db)] Error from TOC entry 4958; 0 19010 TABLE DATA spatial_ref_sys postgres
2015-05-23 22:32:37 +0000: pg_restore: [archiver (db)] could not execute query: ERROR: relation "spatial_ref_sys" does not exist
2015-05-23 22:32:37 +0000: Command was: COPY spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) FROM stdin;
2015-05-23 22:07:39 +0000: pg_restore: processing data for table "topology"
2015-05-23 22:07:39 +0000: pg_restore: [archiver (db)] Error from TOC entry 4959; 0 20039 TABLE DATA topology postgres
2015-05-23 22:07:39 +0000: pg_restore: [archiver (db)] could not execute query: ERROR: relation "topology" does not exist
2015-05-23 22:07:39 +0000: Command was: COPY topology (id, name, srid, "precision", hasz) FROM stdin;
何が足りないのでしょうか?
答え1
方法を見つけました。Ninefold が使用していた拡張機能に何らかの問題があるようだったので、-n public
オプションを追加すると、パブリック スキーマのみのバックアップが作成されます。
PGPASSWORD=password pg_dump -h ipaddress -p port -U user -d database -Fc --no-acl --no-owner -x -O -N postgis -n public > ninefold-backup.dump