pg_dump 參數“default_tablespace”的無效值期間的 postgresql 錯誤:“tbs_db1_index”
有人能幫助我嗎?:)
我有 2 台伺服器,想在獨占實例中拆分數據庫,所以我將我的數據庫 1 逐 1 遷移到第二台伺服器
Postgres 版本 11.16 兩台伺服器
所以這是我在 s1 上的命令
pg_dump db1 > /tmp/db1.dump
然後我在我的 s2 上恢復: 然後
psql -p 5432 db1 < /tmp/db1.dump
我得到這個錯誤
error: invalid value for parameter "default_tablestapce": "tbs_db1_index"
DETAIL: Tablespace "tbs_db1_index" does not exist
, s1 上的 db1 位置與 s2 不同,這可能是問題所在,因為我在 s1 上沒有錯誤或任何問題,我的 db 很好
此外,恢復過程不會停止或中斷它仍在進行中(我的 db 很大)
PS,是的,我可以直接執行此操作,而無需通過此命令轉儲文件
pg_dump –no-owner db1 | psql -p 5432 -v ON_ERROR_STOP=1 -h 192.168.1.2 -U postgres db1
但也不起作用
表空間不是任何數據庫的一部分,因此它們不包含在
pg_dump
輸出中。如果您還想轉儲和恢復表空間,請pg_dumpall -t
在pg_dump
您正在執行的操作之外使用(並首先恢復表空間)。如果要忽略轉儲中的表空間,請使用pg_dump --no-tablespaces
.
這就是我解決這個問題的方法:
刪除現有的 tbs_db1_index 和 tbs_db1_data (即使它是空的!),因為當你創建數據庫時,這個文件是在 db 目錄中
創建的,在舊伺服器中創建名稱與舊伺服器相同的新表空間,
那麼這個命令在舊伺服器上沒有問題(s1)
pg_dump --no-owner db1 | psql -p 5432 -v ON_ERROR_STOP=1 -h 192.168.1.2 -U postgres db1
where 192.168.1.2 - 目標伺服器的地址,在我的例子中是 s2