PostgreSQLでERROR: duplicate key value violates unique constraint "hoge_pkey" DETAIL: Key (id)=(10) already exists.と出る場合
PostgreSQLでレコードをINSERTしたときに、次のようなエラーが出ることがあります。
ERROR: duplicate key value violates unique constraint "hoge_pkey" DETAIL: Key (id)=(10) already exists.
これは『プライマリキーが重複していてINSERTできない』というエラーです。
[参考記事] PostgreSQLで自動採番をするシーケンス(sequence)とは
PostgreSQLでは、INSERTされるプライマリキーはSERIAL型を指定していた場合、シーケンス(sequence)により管理されています。
テーブルのプライマリキーとシーケンスは連動していないため、nextval()を使用せずidを直接指定した場合はシーケンスとのずれが発生することがあります。
プライマリキーとシーケンスを同期させるには、次のようにします。
SELECT SETVAL ('users_id_seq', (SELECT MAX(id) FROM users));
idの値を指定してINSERTしたときには、プライマリキーとシーケンスを同期させるようにしたほうがよいです。
関連記事
- PostgreSQLでSCRAM authentication requires libpq version 10 or aboveと出るとき
- Seedの実行順(外部キー制約などを先に実行させる方法) Foreign key violation
- Seedを実行した後にシーケンスを更新する方法(duplicate key valueエラー)
- PostgreSQLで自動採番をするシーケンス(sequence)とは【AUTO INCREMENT】
- CakePHPでカラムを比較してSELECTする方法
- 複数のデータベースを切り替える方法(別データベースを使用する)
- CakePHPのDB接続情報設定
- EC-CUBEのサーバ移行の方法
- EC-CUBEのバックアップ機能とリストア
- Zend_DBのSELECTメソッドのまとめ
- Zend_DBの基本
- PostgreSQLのインストール
- PostgreSQLのインストール
- Zend Frameworkのデータベース接続
- EC-CUBE
- CakePHP
- CakePHP1
- CakePHP2
- CakePHP3
- CakePHP4
- ディレクトリ構成
- SQLクエリーを直接実行する方法
- TOPページはIndexControllerではない Cannot redeclare config()
- [CakePHPのバグ]キャッシュ処理でunserializeエラーが発生する
- [CakePHPのバグ]キャッシュ処理でunlinkエラーが発生する
- 基本的な特徴
- プライマリキーIDを連番数字ではなく推測しにくい文字列にする方法
- コーディング規約のチェックを行う・整形する標準ツール(PHP CodeSniffer)の使い方
- EC-CUBE2系で商品を大量にカートに入れると注文情報が抜けたりカートが消えたりする
- PHP Strict Standards: Non-static method と出る場合の対処法
- ファイル読み込みPATHを設定
- データベーステーブルを参照しないページを作る
- action名にlistは使えない listを使う方法
- 新規ページを追加するとSC_Utils_Ex::sfChangeCheckBox()のエラーが出るときの対処法
- MySQLで文字化けを防ぐ方法
- CakePHP、Symfony、Zend Frameworkの比較
スポンサーリンク