ホームページ >データベース >mysql チュートリアル >キー「PRIMARY」の重複エントリ - MySQL エラーの解決方法: 主キーのレコードが重複しています

キー「PRIMARY」の重複エントリ - MySQL エラーの解決方法: 主キーのレコードが重複しています

PHPz
PHPzオリジナル
2023-10-05 14:49:076189ブラウズ

Duplicate entry for key \'PRIMARY\' - 如何解决MySQL报错:主键重复记录

MySQL エラーの解決方法: 主キー レコードが重複しています。特定のコード サンプルが必要です。

MySQL データベースを使用すると、主キー レコードが重複するという問題がよく発生します。 。新しいデータをデータベースに挿入するときに、データの主キー値が既存のレコードの主キー値と同じである場合、主キー レコード重複エラーが発生します。このエラーのプロンプトは通常、「キー 'PRIMARY' のエントリが重複しています」というものです。

それでは、この問題をどうやって解決すればいいのでしょうか?この記事では、いくつかの解決策を示し、具体的なコード例を示します。

  1. ON DUPLICATE KEY UPDATE ステートメントを使用する
    ON DUPLICATE KEY UPDATE ステートメントは、重複する主キー レコードを処理するために MySQL によって提供されるメカニズムです。データの挿入時に主キー重複レコード エラーが発生した場合、このステートメントを使用して既存のレコードを更新できます。

サンプル コード:

INSERT INTO table_name (id, name, age) VALUES (1, 'John', 30) 
ON DUPLICATE KEY UPDATE name = 'John', age = 30;

上記の例では、table_name という名前のテーブルにデータを挿入します。データの主キー ID が既に存在する場合、UPDATE ステートメントはレコードの名前フィールドと年齢フィールドの対応する値を更新するために実行されます。

  1. INSERT IGNORE ステートメントを使用する
    別の解決策は、INSERT IGNORE ステートメントを使用することです。このステートメントがデータを挿入しているときに、主キー重複レコード エラーが発生しても、エラーは無視され、挿入操作は中断されません。

サンプル コード:

INSERT IGNORE INTO table_name (id, name, age) VALUES (1, 'John', 30);

上記の例では、ID 1 のレコードがすでに存在する場合、エラーは無視され、挿入操作が続行されます。

  1. 主キーの値を変更する
    データを手動で挿入するときに主キーの重複記録エラーが発生した場合は、主キーの値を変更して重複を避けることができます。

サンプル コード:

SET @max_id = (SELECT MAX(id) FROM table_name);
INSERT INTO table_name (id, name, age) VALUES (@max_id + 1, 'John', 30);

上記の例では、現在のテーブルの id の最大値をクエリし、それを変数 @max_id に保存します。次に、データを挿入するときに、新しく挿入されたレコードの ID が既存のレコードと重複しないように、ID を @max_id 1 に設定します。

主キーの値を変更する場合は、他の問題が発生しないように注意して操作する必要があることに注意してください。

概要:
主キー レコードの重複は、MySQL でよくあるエラーの 1 つです。この問題を解決する場合、ON DUPLICATE KEY UPDATE ステートメントを使用して既存のレコードを更新したり、INSERT IGNORE ステートメントを使用して重複レコード エラーを無視したり、主キー値を変更して重複を避けることができます。状況に応じて適切なソリューションを選択し、コードを実際のニーズに合わせて調整してください。

この記事で提供されている解決策とコード例が、MySQL エラー (主キー レコードの重複) の問題の解決に役立つことを願っています。

以上がキー「PRIMARY」の重複エントリ - MySQL エラーの解決方法: 主キーのレコードが重複していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。