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