[pgsql-jp: 39571] PRIMARY KEYに指定していたIDが重複する現象について

Toshimitu Yanagisawa yanagisawa @ shanon.co.jp
2008年 9月 12日 (金) 12:10:36 JST


いつもお世話になっております。
柳澤と申します。

PRIMARY KEYに指定していたIDが重複し登録されている現象が
発生しましたのでご報告させて頂きます。
また、何か原因や復旧方法をご存知の方がいらっしゃいましたら
教えて頂けますでしょうか。

合わせて重複してしまったIDをキーにして抽出しようとしても、抽出結果が0件
になるなど重複したIDへの操作ができない現象も同時に確認しています。

=> select id from files where id = 92160;
 id
----
(0 rows)

詳細情報は下記に記載させて頂きます。

1.環境

OS:CentOS release 4.6 (Final) 2.6.9-67.0.1.ELsmp
PostgreSQLバージョン:PostgreSQL8.2.6
CPU:Intel(R) Xeon(R) CPU 2.13GHz (quad core)
MEM:4GB

2.発現しているテーブル

                              Table "public.files"
     Column      |  Type   |                     Modifiers

-----------------+---------+----------------------------------------------------
 id              | integer | not null default
nextval('files_id_seq'::regclass)
 applications_id | integer | not null
 path            | text    | not null
 mimetypes_id    | integer | not null
 length          | integer | not null default 0
 compress        | boolean | not null default false
 stats           | text    | not null
 body            | text    |
 md5sum          | text    |
Indexes:
    "files_pkey" PRIMARY KEY, btree (id)
    "files_index" btree (applications_id, path, mimetypes_id)
Foreign-key constraints:
    "ref_applications_id" FOREIGN KEY (applications_id) REFERENCES
applications(id) ON UPDATE CASCADE ON DELETE CASCADE
    "ref_mimetypes_id" FOREIGN KEY (mimetypes_id) REFERENCES
mimetypes(id) ON UPDATE CASCADE ON DELETE CASCADE

3.重複を確認した方法

=> select count(id), id from files group by id order by count(id) desc;

 count |   id
-------+--------
    12 |  92160
     5 |  92416
     3 |  98304
     3 | 127744
     2 |  91904
     2 |  49152
     1 |    108
     1 |  30087
     1 |  30086
     1 |  30085
以下省略

4.重複したIDをキーにして抽出した場合

=> select id from files where id = 92160;
 id
----
(0 rows)

5.すでに重複しているIDを指定してInsertした場合

1回だけInsertが実行できました。
2回目からは、ERROR:  duplicate key violates unique constraint
"files_pkey"のエラーが出てInsertできませんでした。

6.REINDEXをした場合

やはりuplicated values.のエラーが出ます。

REINDEX TABLE files;
ERROR:  could not create unique index
DETAIL:  Table contains duplicated values.

長文になってしまい申し訳ありません。
宜しくお願い致します。



pgsql-jp メーリングリストの案内