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
- ファイル読み込みPATHを設定
- コーディング規約のチェックを行う・整形する標準ツール(PHP CodeSniffer)の使い方
- インストール 初期設定
- CakePHP3系の入手方法・インストール方法
- セキュリティレベルの設定
- 新規ページを追加するとSC_Utils_Ex::sfChangeCheckBox()のエラーが出るときの対処法
- CakePHP、Symfony、Zend Frameworkの比較
- EC-CUBE2系で商品を大量にカートに入れると注文情報が抜けたりカートが消えたりする
- TOPページはIndexControllerではない Cannot redeclare config()
- テンプレート(template)側でログイン情報を取得する方法
- Composerコマンドでウクライナへのメッセージが表示されたことがあります
- AuthコンポーネントのパスワードをCakePHPを使用せずハッシュ化する方法(パスワードの生成ルール)
- ディレクトリ構成
- CakePHP2系の入手方法・インストール方法
- EC-CUBEでMySQLデータベースのデータ取得で文字化けするときの対処法
- ログイン認証処理をする方法
スポンサーリンク