2011-04-04 56 views
4

是否可以指示9.0的pg_dump提供向后兼容的转储,或者强制8.3的pg_restore与该转储一起工作?pg_dump 9.0 to pg_restore 8.3

换句话说,什么是我在解决恢复转储这个错误与9.0制作和pg_restore 8.3选项:

pg_restore: [archiver] unsupported version (1.12) in file header 

什么是这个转储/恢复版本冲突的可能的警告?

+0

[使用pg \ _restore从PostgreSQL的新版本恢复]的可能重复(http://stackoverflow.com/questions/4599696/use-pg-restore-to-restore-from-a-newer-version -of-postgresql) – 2013-05-09 14:24:50

回答

12

创建一个纯文本转储:

pg_dump mydb > db.sql 
psql -d newdb -f db.sql 

这应该工作正常,因为它没有存储的版本信息,并在转储使用普通的SQL格式。数据通过COPY恢复,因此速度很快。如果您已经在数据库中使用了9.0个功能,那么您必须手动编辑转储中的模式才能使其在8.3上运行。然而,Blob可能无法幸免于这种格式。我没有测试过)。

+0

用于记录 - 纯文本pg_dump转储'CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql' while 8.3只支持'CREATE LANGUAGE plpgsql'。 – 2011-04-05 17:13:48