Ralat konflik kekangan kunci asing ditemui semasa operasi pemadaman pangkalan data
Apabila cuba memadam data menggunakan pertanyaan DELETE FROM jobs WHERE job_id = 1 LIMIT 1
, mesej ralat: #1451 - Cannot delete or update a parent row: a foreign key constraint fails
mungkin muncul, menunjukkan bahawa konflik kunci asing telah berlaku. Ini bermakna baris yang akan dipadamkan dalam jadual jobs
telah mengaitkan baris anak dalam jadual lain, menghalang operasi pemadaman.
Untuk mendapatkan cerapan tentang isu ini, mari kita periksa skema pangkalan data yang disediakan. Jadual advertisers
merujuk jadual advertiser_id
melalui kunci asing pada lajur jobs
. Oleh itu, pemadaman kerja dengan pengiklan aktif akan menyebabkan pelanggaran kekangan kunci asing.
Penyelesaian
Untuk menyelesaikan ralat ini, terdapat dua cara:
1. Lumpuhkan pemeriksaan kunci luaran:
Salah satu cara ialah melumpuhkan pemeriksaan kunci asing buat sementara waktu menggunakan arahan SQL berikut:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=0; -- 禁用</code>
Dengan penyemakan kunci asing dilumpuhkan, DELETE
pertanyaan boleh dilaksanakan dengan jayanya. Ingat untuk mendayakan semula semakan kunci asing selepas pemadaman selesai:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=1; -- 启用</code>
2. Kekalkan integriti rujukan:
Pendekatan lain ialah memastikan integriti rujukan dengan mengubah suai data dalam jadual berkaitan. Contohnya, jika jadual jobs
tidak mempunyai baris bergantung dalam jadual paymessomething.advertisers
, operasi padam boleh dilakukan tanpa melanggar kekangan kunci asing.
Ringkasan
Ralat #1451 - Cannot delete or update a parent row: a foreign key constraint fails
menunjukkan konflik kunci asing. Untuk menyelesaikan isu ini, anda boleh melumpuhkan semakan kunci asing buat sementara waktu atau memastikan bahawa tiada baris anak bergantung dalam jadual yang berkaitan. Dengan memahami perhubungan antara jadual, pembangun boleh mengekalkan integriti pangkalan data dengan berkesan dan mencegah ralat yang tidak dijangka semasa operasi pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Pelanggaran Kekangan Utama Asing Apabila Memadam Baris Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!