Postgresql

為什麼 pg_restore 忽略 –create ?錯誤:失敗:致命:數據庫“new_db”不存在

  • January 20, 2022

我正在嘗試執行以下命令:

sshpass  -p "pass" ssh  x@1.2.3.4 "pg_dump -Fc -U foo some_db" | pg_restore --create --dbname=new_db

我得到:

failed: FATAL:  database "new_db" does not exist

這是因為它是 pg_restore 的工作方式。

pg_restore 手冊內容如下:

-C, –create 在恢復之前創建數據庫。如果還指定了 –clean,則在連接到它之前刪除並重新創建目標數據庫。

使用此選項時,以 -d 命名的數據庫僅用於發出初始 DROP DATABASE 和 CREATE DATABASE 命令所有數據都恢復到存檔中出現的數據庫名稱中

當且僅當不使用 -C 時,-d 才會在給定的數據庫中恢復。如果使用 -C,則數據庫用作“啟動板”,而不是目標。

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