Postgresql

為什麼 pg_restore 在從轉儲恢復之前無法使用 –create 選項創建數據庫?

  • March 3, 2018

為什麼 pg_restore 在從轉儲恢復之前無法使用 –create 選項創建數據庫?

pg_restore --username=myuser --create --dbname=mydb --verbose  mybackup

錯誤,

pg_restore: [archiver (db)] connection to database "mydb" failed: FATAL:  database "mydb" does not exist

為了創建數據庫,它需要能夠連接到您的數據庫伺服器才能發出“CREATE DATABASE”命令。連接到伺服器需要你指定一個現有的數據庫來連接,顯然那個數據庫不能是不存在的數據庫,而是要創建的數據庫。通常為維護操作保留一些特殊的數據庫,通常postgres,您可以為此目的連接到這些數據庫。

使用--create模式時,--dbname指定的不是要恢復到的數據庫的名稱,而是要用於創建其他數據庫的數據庫的名稱。

沒有-C它按預期工作。例如,如果我想基於 exampleDB 製作一個 exampleDB_dev,我將執行以下操作:

pg_dump -Fc exampleDB > exampleDB_temp.dump
dropdb exampleDB_dev
<created empty exampleDB_dev database>
pg_restore -d exampleDB_dev exampleDB_temp.dump

引用自:https://dba.stackexchange.com/questions/185503