2012-03-23 6 views
14

я использую следующий синтаксис для pg_dump и восстановленияpg_restore ошибка TOC

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 

свалки была преуспевающей без ошибок, но восстановление делает некоторые ошибки, я демпинг и восстановление в одной машине с тем же пользователем и привилегия все ...

я попробовал с другими форматами также, простой, деготь, сжимаются все получает такую ​​же ошибку ..

моя версия пг является 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... 
+1

Кажется, вы свалка является SQL-скрипт, который должен быть запущен с помощью Psql, не pg_r estore –

ответ

18

это сделал трюк

pg_dump database_name -c -Ft -f file_name.tar 

pg_restore -d database_name -c file_name.tar 

до этого я пытался восстановить с вне включая -c (чистый)

даже если -c включен в pg_dump не используется в pg_restore, если не сказать, чтобы использовать ...

+2

+1 для флага '-c'. – Jonah

+4

Использование «чистого» флага также может вызвать множество проблем, поскольку оно будет жаловаться на отсутствие объектов при использовании новой базы данных. – cslotty