PostgreSQLのバックアップとリストア 上書きできずエラー

2021-07-13

PostgreSQLでリストアした時に既存DBある場合のエラー

サーバーの移設の話で、移行先のPostgreSQLのDBに移行前のDBを反映しようと思ったら、下記のエラーでレストアのエラーになります

# 移行前のサーバーよりDBのバックアップを取得する
$ pg_dump demoshop> /var/tmp/pg_demo.db

# 移行先のサーバーでDBをレストア(復元)する
$ psql -U postgres -f /var/tmp/pg_demo.db demoshop
・・・・・・
ALTER TABLE
psql:/var/tmp/pg_demo.db:1104: ERROR:  relation "m売上" already exists

PostgreSQLの復元するDBが存在する場合に、レストア時にDBを削除しないので、既存のDBをある場合はエラーになりレストアできないようです

既存のDBを削除(drop database DB名)してから再度作成(create database DB名)してから、psqlコマンドでレストアすれば問題なく復元できました

drop databaseを叩く前に念の為に、DBはバックアップした方が良いかと思います

$ psql
postgres=# drop database demoshop;
postgres=# create database demoshop;
postgres=# \q

$ psql -U postgres -f /var/tmp/pg_demo.db demoshop