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

清河 宗一朗 ifthatistrueornot @ yahoo.co.jp
2016年 7月 27日 (水) 10:19:59 JST


清河です。

早速のご回答ありがとうございます。
 # 新標準PostgreSQLにはお世話になりましたw

REINDEXで現象が改善されました。助かりました。

> なれば少ないはずなのですが、Windows ごとクラッシュ終了して、
> ストレージに書き見損なった等があれば起きるかもしれません。


いえ、そういうことはなかったです。
実は同じ現象が一度発生し、drop databaseしてから
DB再作成した直後の今回の事象でした。
ちなみに関係あるかわかりませんが、最初の時もid=1が認識されていませんでした。

Windows8.1でも同様の環境があるのですが、そちらでは本現象は発生しておりません。
ですので、Windows10における不具合(?)の可能性もあるのかと思った次第であります。

また何か発見がありましたらご報告させて頂きます。




----- Original Message -----
> From: TAKATSUKA Haruka <harukat @ postgresql.jp>
> To: PostgreSQL Japanese Mailing List <pgsql-jp @ ml.postgresql.jp>
> Cc: 
> Date: 2016/7/26, Tue 13:44
> Subject: [pgsql-jp: 41877] Re: 検索時に特定のPKを条件に指定するとレコードが抽出できない
> 
> 
> 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 メーリングリストの案内