[pgsql-jp: 41906] Re: 重複キーのデータが生成される

MauMau maumau307 @ gmail.com
2016年 10月 24日 (月) 20:35:27 JST


水口さん


MauMauといいます。

今の状態で、psqlなどでそのテーブルに同じプライマリキーの行を挿入しよう
としたら、正しくエラーになりますか?
なるとしたら、次のことが考えられます。
これはどのバージョンでも発生しえます。使い方の問題です。
実際に利用者の環境で発生しましたし、私も再現できました。

1.postmasterプロセスだけを停止する。他のpostgresは動作したまま。
2.$PGDATA/postmaster.pidを削除する。
3.PostgreSQLを起動する。
4.テーブルに行を挿入する。

こうすると、1で残った古いインスタンスのpostgresが、4で起動したインス
タンスと並行動作してしまいます。
そして、互いが互いに築かずに、それぞれの共有バッファ上のデータをディス
クに書き出します。
すると、各インスタンスの共有バッファに同じプライマリキーの行があると、
それらが同じテーブルのデータファイルに書き出され、重複キーができあがり
ます。


以上です。



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