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」ってヤツは「シーケンス」を作ってくれるとのコト。
この「シーケンス」で「数値の増分、現在値など」を管理しているっぽい。

つまり、テーブルをコピーしたあとに対応するシーケンスの「現在値」も修正する必要がある

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい