MySQLのエラー「重複キーによる一意キー制約違反」を解決する方法

MySQLで重複するレコードのユニーク制約によるエラーが発生した場合は、問題解決のため、以下のような方法があります。

  1. 重複するレコードを削除する:重複するレコードを削除するには、DELETE ステートメントを実行します。たとえば、次のようなステートメントを使用して重複するレコードを削除できます。
DELETE FROM table_name WHERE duplicate_key = value;

ここで、table_nameはテーブル名であり、duplicate_keyはユニークキーの列の名前であり、valueは重複するレコードの値です。

  1. 重複レコードを修正する: UPDATE ステートメントを実行して重複レコードを修正し、一意キーの値が重複しないようにします。たとえば、以下のステートメントを使用して重複レコードを変更できます:
UPDATE table_name SET column_name = new_value WHERE duplicate_key = value;

table_name はテーブル名、column_name はユニークキーのカラム名、new_value は新しいユニーク値、duplicate_key は重複レコードの値です。

  1. 重複する一意キーのレコードがある場合、INSERT IGNOREステートメント使用して重複レコードの挿入を無視できます。たとえば、次のステートメントを使用してデータを挿入できます。
INSERT IGNORE INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

table_nameが表名、column1、column2などが列名、value1、value2などが対応する列の値です。

  1. INSERT ON DUPLICATE KEY UPDATEステートメントを使用して、ユニークキーの重複レコードを含むデータを挿入する場合、重複レコードの値を更新できます。たとえば、次のステートメントを使用してデータを挿入できます。
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...) ON DUPLICATE KEY UPDATE column1 = new_value1, column2 = new_value2, ...;

table_name がテーブル名、column1、column2 などがカラム名、value1、value2 などが各カラムに対応する値、new_value1、new_value2 などが新しい一意な値。

  1. 重複データの原因が主キーの値が不正である場合は、一意制約の値を修正してください。

作業を実行する前に、データベースのデータをバックアップすることをお勧めします。このバックアップにより、作業の失敗によるデータ損失を防ぐことができます。

bannerAds