pg_dump によって作成された dump ファイルを pg_restore を実行して PostgreSQL データベースにリストアしようとすると、
pg_restore: error: unsupported version
のエラーが発生が発生した。
ここでは、エラー原因と対応方法について、記載する。
エラー原因と対応方法
事象
pg_dump によって作成された dump ファイルを pg_restore を実行して PostgreSQL データベースにリストアしようとすると、下記のエラーが発生が発生した。
・エラー
pg_restore: error: unsupported version (1.15) in file header
原因
pg_dump をした postgresql-client のバージョンと pg_restore をした postgresql-client のバージョンが異なっていた。
今回、下記の Linux サーバ A ( postgresql-client 16.1 ) で、
pg_dump コマンドを実行して、Linux サーバ C の PostgreSQL データベースから dump ファイルを取得して、
下記の Linux サーバ B ( postgresql-client 15.1 ) で、
pg_restore -a -h LinuxサーバDのIPアドレス -p 5432 -d データベース名 -U ユーザ名 -n スキーマ名 -t xxxxx.dump
Linux サーバ A ( postgresql-client 16.1 ) と Linux サーバ B ( postgresql-client 15.1 ) の postgresql-client のバージョンが異なっていたことがエラーが発生した原因だった。
$ pg_dump --version pg_dump (PostgreSQL) 16.1
$ pg_restore --version pg_restore (PostgreSQL) 15.1
対応方法
Linux サーバ B ( postgresql-client 15.1 ) の postgresql-client を Linux サーバ B で下記のコマンドを実行して、postgresql-client のバージョン 16.2 にした。これにより、pg_restore でエラーが発生せず、正常にリストアが実行された。
・コマンド
$ sudo apt install postgresql-client
また、
$ pg_restore --version pg_restore (PostgreSQL) 16.2
しかし、上記の対応では、Linux サーバ A, B, C, D の PostgreSQL のバージョンにズレがあるため、Linux サーバ A, B, C, D のすべてのバージョンを合わせたほうがよい。
0 件のコメント :
コメントを投稿