Rumah  >  Artikel  >  pangkalan data  >  Entri pendua untuk kunci 'PRIMER' - Cara menyelesaikan ralat MySQL: Rekod pendua kunci utama

Entri pendua untuk kunci 'PRIMER' - Cara menyelesaikan ralat MySQL: Rekod pendua kunci utama

PHPz
PHPzasal
2023-10-05 14:49:076033semak imbas

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

Cara menyelesaikan ralat MySQL: Rekod kunci primer pendua, contoh kod khusus diperlukan

Apabila menggunakan pangkalan data MySQL, kami sering menghadapi masalah rekod kunci utama pendua. Apabila kami memasukkan sekeping data baharu ke dalam pangkalan data, jika nilai kunci utama data adalah sama dengan nilai kunci utama rekod sedia ada, ralat rekod kunci primer pendua akan berlaku. Gesaan untuk ralat ini biasanya "Entri pendua untuk kunci 'PRIMER'".

Jadi, bagaimana untuk menyelesaikan masalah ini? Artikel ini akan menyediakan beberapa penyelesaian dan memberikan contoh kod khusus.

  1. Gunakan penyataan ON DUPLICATE KEY UPDATE
    Pernyataan ON DUPLICATE KEY UPDATE ialah mekanisme yang disediakan oleh MySQL untuk mengendalikan rekod kunci primer pendua. Apabila ralat rekod pendua kunci utama berlaku semasa memasukkan data, anda boleh menggunakan pernyataan ini untuk mengemas kini rekod sedia ada.

Contoh kod:

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

Dalam contoh di atas, kami memasukkan sekeping data ke dalam jadual bernama table_name Jika id kunci utama data sudah wujud, pernyataan UPDATE akan dilaksanakan untuk mengemas kini nilai-nilai. medan nama dan umur rekod yang sepadan.

  1. Gunakan pernyataan INSERT IGNORE
    Penyelesaian lain ialah menggunakan pernyataan INSERT IGNORE. Apabila pernyataan ini memasukkan data, jika ralat rekod pendua kunci utama berlaku, ralat akan diabaikan dan operasi sisipan tidak akan terganggu.

Contoh kod:

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

Dalam contoh di atas, jika rekod dengan id 1 sudah wujud, ralat akan diabaikan dan operasi sisipan akan diteruskan.

  1. Ubah suai nilai kunci utama
    Jika ralat rekod pendua kunci utama berlaku apabila data dimasukkan secara manual, kami boleh mengubah suai nilai kunci utama untuk mengelakkan pertindihan.

Kod sampel:

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

Dalam contoh di atas, kami menanyakan nilai maksimum id dalam jadual semasa dan menyimpannya dalam pembolehubah @max_id. Kemudian, apabila memasukkan sekeping data, tetapkan id kepada @max_id + 1 untuk memastikan id rekod yang baru dimasukkan tidak bertindih dengan rekod sedia ada.

Perlu diingatkan bahawa anda perlu berhati-hati apabila mengubah suai nilai kunci utama untuk memastikan masalah lain tidak diperkenalkan.

Ringkasan:
Rekod kunci primer pendua ialah salah satu ralat biasa dalam MySQL. Apabila menyelesaikan masalah ini, anda boleh menggunakan kenyataan ON DUPLICATE KEY UPDATE untuk mengemas kini rekod sedia ada, gunakan pernyataan INSERT IGNORE untuk mengabaikan ralat rekod pendua atau mengubah suai nilai kunci utama untuk mengelakkan pertindihan. Pilih penyelesaian yang tepat untuk situasi anda dan sesuaikan kod anda dengan keperluan sebenar anda.

Saya harap penyelesaian dan contoh kod yang disediakan dalam artikel ini dapat membantu anda menyelesaikan ralat MySQL: masalah rekod kunci primer pendua.

Atas ialah kandungan terperinci Entri pendua untuk kunci 'PRIMER' - Cara menyelesaikan ralat MySQL: Rekod pendua kunci utama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn