質問: データがリストアできない!! 以下のようにバックアップ後、リストアし、odbcを利用し、accessでレコード追加したところ、再度、リストアしようとするとエラーが出て、復元できません。 (1)バックアップ sudo -u test pg_dump -o testdb > /home/test/test-back-1.dmp (2)リストア sudo -u test dropdb testdb sudo -u test createdb -eeuc_jp testdb sudo -u test psql -e testdb < /home/test/test-back-1.dmp (3)odbcを利用し、accessの追加クエリでtbl_tensuのレコードを追加 (4)再度、リストア sudo -u test dropdb testdb sudo -u test createdb -eeuc_jp testdb sudo -u test psql -e testdb < /home/test/test-back-1.dmp 以下のようなエラーが、レコード追加したテーブルも何もしていないテーブルにも出てしまい、正しく復元できません。 alter table only tbl_tensu add constraint tbl_tensu_primary_key primary key (hospnum, srycd, yukostymd, yukoedymd); error: multiple primary keys for table "tbl_tensu" are not allowed create index idx_tensu_formalname on tbl_tensu using btree (formalname); error: relation "idx_tensu_formalname" already exists create index idx_tensu_kananame on tbl_tensu using btree (kananame); error: relation "idx_tensu_kananame" already exists create index idx_tensu_kensagrp on tbl_tensu using btree (hospnum, srykbn, knsjisgrpkbn); error: relation "idx_tensu_kensagrp" already exists create index idx_tensu_name on tbl_tensu using btree (name); error: relation "idx_tensu_name" already exists 何が原因でどうすれば、復元したときにエラーが出なくなるでしょうか? どなたか、わかる方ご教示ください。 よろしくお願いします。
回答: すでにテーブルが存在する状態で、ダンプファイルからリストアしようとした時のエラーのようです。 「(4)再度、リストア」の時の、データベースの再作成(dropdb/createdb) は本当に成功していますでしょうか。 (3)のodbcで接続した時に、testdbにコネクションが張られた状態となり、 testdbがdropできず、残ったままで、リストアしているのではないかという気がします。 (sql実行中でなくても、コネクションが1つでも張られている限り、 データベースのdropはできません。) (4)のsudo -u test dropdb testdb 実行後に、psql -l で確認すると、testdbは 消えておりますでしょうか。 (外していたらすいません)