Posted at

postgres で INSERT時に 「id(主キー) がユニークじゃないよ」と怒られる。

More than 1 year has passed since last update.

エラーとしては以下のようなもの。

'duplicate key value violates unique constraint "*******" ' 

IDの自動採番が、なぜかズレてしまっているため今回の事態になった。

まず、現在の主キーの最大値を確認。

SELECT MAX(id) FROM table;

続いて、自動採番をしている nextval関数 での値を確認。

SELECT nextval('table_id_seq');

この値が主キーの最大値より小さいと、ズレていることになる。

続いてズレの修正。

以下のように setval関数 で修正できる。

SELECT setval('table_id_seq', (SELECT MAX(id) FROM table));

以上。

下記のサイトを参考(というかそのまま)にさせてもらいました。

大変助かりました。

https://www.xmisao.com/2014/06/07/duplicate-key-value-violates-unique-constant-primary-key-on-postgresql.html