Как создать базу данных при восстановлении

Как создать базу данных при восстановлении

Я хочу, чтобы pg_restore создал базу данных перед восстановлением с помощью Postgres 12 на Debian 10

Я пытался

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" не удалось: FATAL: база данных "mydb" не существует

Как создать базу данных перед восстановлением?

использование Postgres 12 на Debian 10

решение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.

Связанный контент