復元時にデータベースを作成する方法

復元時にデータベースを作成する方法

Debian 10 で Postgres 12 を使用して復元する前に、pg_restore でデータベースを作成したい

私は試した

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

関連情報