web-dev-qa-db-ja.com

pg_restore tocエラー

私はpg_dumpと復元に次の構文を使用していました

pg_dump eval --inserts -b -c --encoding UTF8 -Fc -f eval.sql.tar.gz -x -U postgres
createdb -T template0 test -U postgres
pg_restore -d test eval.sql.tar.gz -e -U postgres

ダンプはエラーなしで成功しましたが、復元ではいくつかのエラーが発生します。同じユーザーと特権を持つ同じマシンですべてダンプして復元しています...

私は他のフォーマットでも試しましたが、プレーン、タール、圧縮すべて同じエラーになります。

私のpgのバージョンは8.4.11で、psqlのバージョンは8.4.11です。

私はこれらのエラーの原因がわかりません。

 pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 4965; 0 138871 TABLE DATA ir_act_report_xml insigni
pg_restore: [archiver (db)] could not execute query: ERROR:  invalid input syntax for integer: "purchase.order"
LINE 1: ...st for Quotation', 'ir.actions.report.xml', NULL, 'purchase....
                                                             ^
    Command was: INSERT INTO ir_act_report_xml VALUES (350, 'Request for Quotation', 'ir.actions.report.xml', NULL, 'purchase.order', 'purcha...
25
MAHI

これはトリックをしました

pg_dump database_name -c -Ft -f file_name.tar 

pg_restore -d database_name -c file_name.tar

これの前に-c(clean)を含めずに復元しようとしていました

-cがpg_dumpに含まれていても、使用するように指定しない限り、pg_restoreでは使用されません...

30
MAHI

私の場合の解決策:

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U username -d database_name dump_name.dump
19
AkashP