sql 重複を認めないエラー(Postgres)
2011/06/17
DBにデータを登録しようとしたら下記のようなエラーがでてきた。
※エラーは「IDがダメ」って感じのエラー。
duplicate key violates unique constraint "xxx_pkey"
テーブルは「id(serial)、data(text)」ってな感じで「INSERT INTO [テーブル](data) VALUES ('xxx');」を実行。
idの型は「serial」なんだから記載は不要なはず。
対応
カラム「ID」の「シーケンス」の「現在値」を修正。
メモ
まず、エラーを調べる。
duplicate key violates unique constraint "xxx_pkey"
→『重複したキーは「xxx_pkey」に違反』
…違反するも何もIDは未記入だし、そのIDはPostgresさんが勝手に追加してくれるんじゃないの…?
原因
意味がわからないので頑張って調べてみた。
とりあえずわかったことは下記。
テーブルをコピーしたのが原因っぽい。
正確には「コピーしただけ」ってのが原因っぽい。
正確には「コピーしただけ」ってのが原因っぽい。
コピーしただけじゃダメだそうです。
型の「serial」ってヤツは「シーケンス」を作ってくれるとのコト。
この「シーケンス」で「数値の増分、現在値など」を管理しているっぽい。
つまり、テーブルをコピーしたあとに対応するシーケンスの「現在値」も修正する必要がある