[pgsql-jp: 26728] Re: \copyで一括アップ後新規登録が出来ない

Masashi Ohba ohba @ intelight.co.jp
2002年 7月 17日 (水) 16:58:03 JST


大場です。

Kenji wrote;

>Warning: PostgreSQL query failed: ERROR: Cannot insert a duplicate key into
>unique index kifu_msgno_key in /home/sites/site11/web/kifudb/renjukifu.php
>on line 213
>
>メッセージの保存でエラーが発生しました。
>
>と言うエラーが返ります。

何がおかしいかは
「Cannot insert a duplicate key into unique index kifu_msgno_key」
というところに書いてありますが、そのエラーの意味はどう解釈したんですか?

#エラーは書いてあるのことを理解しない限り無意味です
#英語が苦手ならば辞書を引けばよいだけの話

新しくテーブルを作成して、それにデータをコピーすると
copyしたらデータは元のと同じになりますが
おそらくcopyではkifu_msgno_keyに対してはなにも操作しません。

kifu_msgno_keyはデータが増えたのを知らないわけですから
kifu_msgno_keyが初期状態の0だとして、次のデータは
シリアルを増やして1になりますが、copyでデータが
100まで増えてたら1は絶対に書けません

そうしたら、PHP通した時にkifu_msgno_keyを参照して
ユニークな番号を打とうとした場合に重複が発生します。

「msgno serial」となっているので、ユニークでなければ
ならないところに重複したシリアルで書こうとしたら
「duplicate」と怒られます。

setvalでkifu_msgno_keyを調整してください

------------------------------------------------------------
大場正志(Masashi Ohba)
E-Mail  ohba @ intelight.co.jp
(株) インテライト
http://www.intelight.co.jp
------------------------------------------------------------



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