コンテンツへスキップ
SQL/データベースエラーエラー
23505

23505 — 一意制約違反

INSERT または UPDATE が一意制約または主キーに違反した。

postgresql

このエラーの原因

UNIQUE 制約または PRIMARY KEY を持つカラムに既存の値を挿入しようとしている。

修正方法

INSERT ... ON CONFLICT (PostgreSQL) または ON DUPLICATE KEY UPDATE (MySQL) を使用する。挿入前に重複の有無を確認する。

例

-- unique_violation
INSERT INTO users (email) VALUES ('dup@test.com');
-- Fix: use ON CONFLICT
INSERT INTO users (email) VALUES ('dup@test.com')
  ON CONFLICT (email) DO UPDATE SET updated_at = NOW();
公式ドキュメント

関連するエラーコード