テクノロジー · 実用ガイド
pg_dump が「server version mismatch」?client path と restore target を先に証明
server は正常でも shell・GUI・wrapper・container が古い pg_dump を実行していることがあります。実体と endpoint を記録し、compatible client を選び、restore test 後に backup を承認します。

server は正常でも shell・GUI・wrapper・container が古い pg_dump を実行していることがあります。実体と endpoint を記録し、compatible client を選び、restore test 後に backup を承認します。
pg_dump は対応する旧 server を dump できますが、自身より新しい major server は拒否します。 shell の version 表示は GUI・CI・wrapper・container が同じ executable を使う証明ではありません。
1. 失敗した caller と binary を保存
wrapper、GUI profile、container image、CI step と stderr、exit、command -v、configured/resolved path、ownership、pg_dump --version を保存します。
同じ execution context で確認します。shell は 18 でも service や image は 17 を呼ぶ場合があります。
2. server endpoint と major を証明
secret を出さず host、port、database、user を記録し、PGHOST、PGPORT、service file を確認して server_version と server_version_num を問い合わせます。
local package や socket name から remote server major を推測しません。
3. production を変えず compatible client を選択
source server 以上で対応範囲内の pg_dump を使い、wrapper を explicit packaged binary または pinned client image に向けます。server files や generic symlink は盲目的に変えません。
client 変更は database upgrade ではありません。新しい command、connection、output が証明されるまで旧 runner を保存します。
4. dump contract と output を保存
plain/custom/directory を意図して選び、stderr warning と zero exit を保存します。roles/tablespaces が必要なら pg_dumpall も契約に含めます。
archive は pg_restore --list、plain SQL は header を確認し、psql -X と ON_ERROR_STOP で restore します。
5. acceptance 前に isolated restore
intended target major の isolated server に restore し、empty database と globals を正しく用意し、全 error を記録します。
schemas、extensions、ownership、row counts、constraints と安全な application check が通った時だけ backup を承認します。
