
Я хочу, чтобы 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
.