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