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

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

Я также пробовал использовать другие форматы, простой, tar, сжатый, все с той же ошибкой ..

моя версия 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...

person MAHI    schedule 23.03.2012    source источник
comment
Кажется, ваш дамп - это SQL-скрипт, который нужно запускать с помощью psql, а не pg_restore   -  person a_horse_with_no_name    schedule 23.03.2012


Ответы (3)


это сработало

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, если мы не говорим использовать ...

person MAHI    schedule 12.04.2012
comment
Использование флага очистки также может вызвать множество проблем, поскольку при использовании новой базы данных он будет жаловаться на недостающие объекты. - person cslotty; 14.07.2015
comment
-c флаг не работал. По-прежнему возникает та же ошибка: ‹br/› ‹code› $ pg_restore -d development -t integration -c b7c5 pg_restore: [archiver (db)] Ошибка при ОБРАБОТКЕ TOC: pg_restore: [archiver (db)] Ошибка из записи 210 TOC ; 1259 16535 Интеграции ТАБЛИЦ u5j7 pg_restore: [архиватор (db)] не смог выполнить запрос: ОШИБКА: роль u5j7 не существует. Команда была: ALTER TABLE public.integrations OWNER TO u5j7; ВНИМАНИЕ: при восстановлении игнорируются ошибки: 1 - person IamLearning; 08.01.2019

Решение в моем случае:

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U username -d database_name dump_name.dump
person AkashP    schedule 15.03.2018
comment
--if-exists удобно, если вы хотите избавиться от ненужных ошибок. postgresql.org/docs/current/app-pgrestore.html - person Naramsim; 12.03.2019
comment
многословие полезно - person Andrew; 13.03.2019

Это сработало для меня:

Увеличьте значение max_wal_size postgresql (max_wal_size = 2 ГБ) в postgresql.conf

person DaWe    schedule 27.04.2021