大多数情况下,此错误意味着您的还原操作使用了无效格式
来自 pg_dump 手册( pg_dump --help )
-F, --format=c|d|t|p output file format (custom, directory, tar,
plain text (default))
这意味着如果您使用 pg_dump 不带选项--format / -F创建转储,您的转储将以纯文本格式创建
注意:纯文本格式无法使用pg_restore工具恢复。请改用psql < dump.sql。
例子:
# plain text export/import
pg_dump -Fp -d postgres://<db_user>:<db_password>@<db_host>:<db_port>/<db_name> > dump.sql
psql -d postgres://<target_db_user>:<target_db_password>@<target_db_host>:<target_db_port>/<target_db_name> -f dump.sql
# custom format
pg_dump -Fc -d postgres://<db_user>:<db_password>@<db_host>:<db_port>/<db_name> > dump.sql.custom
pg_restore -Ft postgres://<target_db_user>:<target_db_password>@<target_db_host>:<target_db_port>/<target_db_name> dump.sql.custom
# tar format
pg_dump -Ft -d postgres://<db_user>:<db_password>@<db_host>:<db_port>/<db_name> > dump.sql.tar
pg_restore -Ft postgres://<target_db_user>:<target_db_password>@<target_db_host>:<target_db_port>/<target_db_name> dump.sql.tar
恢复格式与备份不匹配时,也会出现来自主题的错误。
例如,创建的转储将采用自定义格式,但用于恢复指定的tar