如何在恢复时创建数据库

如何在恢复时创建数据库

我希望 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

相关内容