i对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、compressed都会出现相同的错误。。
我的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...
这是的诀窍
pg_dump database_name -c -Ft -f file_name.tar
pg_restore -d database_name -c file_name.tar
在此之前,我试图恢复包括-c(干净)
即使-c包含在pgdump中,它也不会在pgrestore中使用,除非我们说使用。。。
在我的案例中的解决方案:
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U username -d database_name dump_name.dump
这对我有效:
增加postgresql.conf
中的max_wal_size
postgresql设置(max_wal_size=2GB)