[pgsql-jp: 41877] Re: 検索時に特定のPKを条件に指定するとレコードが抽出できない

TAKATSUKA Haruka harukat @ postgresql.jp
2016年 7月 26日 (火) 13:44:27 JST


JPUG の高塚と申します。

よくあるケースは「インデックスが壊れている」ですね。

  =# REINDEX INDEX pkey_aaaaa;

上記のように REINDEX して直ったなら、それで間違いありません。

とはいえ Btree インデックスが壊れる障害は 9.5.2 バージョンとも
なれば少ないはずなのですが、Windows ごとクラッシュ終了して、
ストレージに書き見損なった等があれば起きるかもしれません。



On Tue, 26 Jul 2016 01:24:00 +0900 (JST)
清河 宗一朗 <ifthatistrueornot @ yahoo.co.jp> wrote:

> はじめまして。清河と申します。
> 宜しくお願い致します。
> 
> 検索時に特定のPKを条件に指定するとレコードが抽出できない状況に陥っています。
> 
> ■現象
> => \d aaaaa
> 
> id          integer          not null     default nextval('bbb_seq'::regclass)
> name     varchar(20)    ・・・・・・
> 
> インデックス:
> "pkey_aaaaa" PRIMARY KEY, btree (id)
> 
> 参照元:
> TABLE "ccccc" CONSTRAINT "fkey_ccccc" FOREIGN KEY (id) REFERENCES aaaaa(id)
> 
> 
> => select * from aaaaa;
> id      |  name   ・・・・
> -----------------------
> 1    |  name1
> 2    |  name2
> 3    |  name3
> 
> => select * from aaaaa where id = 1;
> id      |  name   ・・・・
> -----------------------
> 
> => select * from aaaaa where id = 2;
> id      |  name   ・・・・
> -----------------------
> 2    |  name2
> 
> => select * from aaaaa where name = 'name1';
> id      |  name   ・・・・
> -----------------------
> 1    |  name1
> 
> 
> 
> 上記のように、id=1のレコードは存在しており、
> PK以外を検索条件にした場合はヒットするのですが、
> PKを条件にした場合のみ抽出されません。
> 
> PKのid=1が認識されていないため、
> 参照整合性制約のある先のテーブルcccccにid=1のレコードを挿入しようとするときも
> 
> ERROR:  insert or update on table "ccccc" violates foreign key constraint "fkey_ccccc"
> DETAIL:  Key (id)=(1) is not present in table "aaaaa".
> 
> が発生しています。
> 
> 
> 不具合?の動きのような気もしており、
> 以前はこのようなことはなかったと思うのですが、
> 最近Windows7→Windows10にアップデートした影響でしょうか・・・??
> 
> 
> 
> ■環境
> OS:Windows10 Home
> DB:PostgreSQL 9.5.2
> 
> 
> どうぞ、宜しくお願い致します。

______________________________________________________________________
 日本PostgreSQLユーザ会  高塚 遙  http://www.postgresql.jp 



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