我希望 pg_restore 在 Debian 10 上使用 Postgres 12 进行恢复之前创建数据库
我试过
PG_COLOR=auto
PGHOST=localhost
PGPASSWORD=mypass
PGUSER=postgres
export PGHOST PGPASSWORD PG_COLOR PGUSER
pg_restore --clean --create --if-exists --dbname=mydb --jobs=4 --verbose "mydb.backup"
但出现错误
pg_restore:连接到数据库进行恢复 pg_restore:错误:连接到数据库“mydb”失败:严重:数据库“mydb”不存在
如何在恢复之前创建数据库?
在 Debian 10 上使用 Postgres 12
答案1
pg_restore文档解释这个错误:
-C——创建
在还原到数据库之前先创建数据库。如果还指定了 --clean,则在连接到目标数据库之前先删除并重新创建目标数据库。
使用 --create 时,pg_restore 还会恢复数据库的注释(如果有)以及特定于此数据库的任何配置变量设置,即任何提及此数据库的 ALTER DATABASE ... SET ... 和 ALTER ROLE ... IN DATABASE ... SET ... 命令。除非指定 --no-acl,否则还会恢复数据库本身的访问权限。
使用此选项时,用 -d 命名的数据库仅用于发出初始 DROP DATABASE 和 CREATE DATABASE 命令. 所有数据都将恢复到存档中出现的数据库名称中。
您必须将预先存在的数据库传递给-d
例如-d postgres
或-d template1
。另请注意,您的备份应包含CREATE DATABASE
命令,其存在取决于 使用的参数pg_dump
。