RailsのTaskでレポートを生成するように作っているのですが、スケジュールで毎週動かすようにしていたのですが、どうもうまくいっていないようなので、調べてみたら、下記のエラーになっていました。
プライマーキーの最大値が更新されていないようです。
1 2 3 |
rake aborted! PG::Error: ERROR: duplicate key value violates unique constraint "reports_pkey" DETAIL: Key (id)=(2) already exists. |
対処方法
Railsが独自のPostgreSQLシーケンスをつかっているかららしいです。
なので、SQLで最大値をセットしてあげます。これで問題なく動くようになりました。
1 |
SELECT setval('reports_id_seq', (SELECT max(id) FROM reports)); |