pg_restore错误:“关系不存在”并创建新数据库

时间:2018-04-06 06:39:21

标签: postgresql psql exists pg-dump pg-restore

我使用以下命令备份了我想要恢复到新数据库的特定表:

call pg_dump -Fc -h server -d database -U user -p password -v -f dump.sql -t public.table1 -t public.table2

我没有问题。

然后,我想通过使用:

创建一个带有pg_restore的新数据库来恢复转储
call pg_restore --clean --create -d temp -h server -p password -U user dump.sql

这给了我一个"数据库temp不存在"错误。这应该已经创建了数据库,并据我所知还原它。

我然后然后创建" temp"数据库手动并运行:

call pg_restore --clean --create -d temp -h server -p password -U user dump.sql

这是通过,但不会创建表并给我一个错误"关系表1"和"关系表2"不存在,只为两个表创建相应的id_sequences。

我真正想要的是不必手动创建新数据库,并且使用以下命令通过pg_restore将备份中的所有表还原到一个全新的数据库中:

call pg_restore --clean --create -d temp -h server -p password -U user dump.sql

据我了解。

1 个答案:

答案 0 :(得分:1)

为了创建数据库temp,首先需要将pg_restore连接到不同的数据库。

所以不能使用-d temp;您必须指定现有数据库,通常为postgres

pg_restore将连接到该数据库,发出CREATE DATABASE temp,连接到temp并继续恢复数据。