[英]Postgres restoration from pg_dumpall: relation does not exist, invalid command \N
我在Linux服务器上运行了pg_dumpall而我正在尝试在另一台Linux服务器上恢复生成的文件,运行相同版本的postgres(8.1.21-1.el5_5.1)。
当我尝试恢复时,我收到以下错误:
# psql --user=postgres -f pgbackup_dcs.sql postgres
[...]
psql:pgbackup_dcs.sql:10753: ERROR: relation "sl_event" does not exist
psql:pgbackup_dcs.sql:10754: invalid command \N
psql:pgbackup_dcs.sql:10755: invalid command \N
psql:pgbackup_dcs.sql:10756: invalid command \N
psql:pgbackup_dcs.sql:10757: invalid command \N
psql:pgbackup_dcs.sql:10758: invalid command \N
psql:pgbackup_dcs.sql:10759: invalid command \N
[there are a lot of other errors following this point]
dumpfile中的这些行看起来像这样(这里的第一行是10753)
COPY sl_event (ev_origin, ev_seqno, ev_timestamp, ev_minxid, ev_maxxid, ev_xip, ev_type, ev_data1, ev_data2, ev_data3, ev_data4, ev_data5, ev_data6, ev_data7, ev_data8) FROM stdin;
1 687653 2010-12-08 11:54:45.669861 36713740 36713741 SYNC \N \N \N \N \N \N \N \N
1 687654 2010-12-08 11:54:55.6757 36713769 36713770 SYNC \N \N \N \N \N \N \N \N
1 687655 2010-12-08 11:55:05.68132 36713796 36713797 SYNC \N \N \N \N \N \N \N \N
我在转储或恢复方面做错了吗? 如何在新服务器上恢复数据库?
我找到了这个修复,但它确实有效
首先删除/删除要完全恢复的数据库
su - postgres
createdb -T template0 dbname
psql -U username -d dbname -f dumpfile
原因是当pg_dump
创建相对于template0的.dmp文件时,可能与用于创建数据库的文件不同http://openacs.org/forums/message-view?message_id=148479
备份中是否有CREATE TABLE sl_event(....)? 您尝试将内容复制到不存在的表中,它必须在备份中丢失,或者在复制语句之后创建。
您是否可以进行仅数据备份? 即pg_dumpall -a将拒绝创建您的表格,并将导致类似这样的事情。 除此之外我的猜测是,如果不是这种情况,那么你有一个导致这个的上游错误。
使用pg_dump一次转储单个数据库。 我认为转储一个单一的数据库一次是个好主意。 我们使用all不需要转储系统db像template0,postgres ..
经过大量的搜索后,我在postgres库目录中发现了一些来自Slony的额外库文件(xxid.sl和名称中带有“slony”的几个文件),并且在将这些文件复制到目标服务器后,导入进行得很顺利。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.