[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 メーリングリストの案内