Ralat: Pelanggaran Kekangan Kunci Asing – Memadam Baris Induk
Percubaan untuk memadamkan rekod kerja (cth., DELETE FROM jobs WHERE job_id = 1 LIMIT 1;
) mengakibatkan ralat #1451: "Tidak boleh memadam atau mengemas kini baris induk: kekangan kunci asing gagal". Ini berlaku kerana jadual advertisers
mempunyai kunci asing yang merujuk kepada jobs
jadual advertiser_id
.
Skema Pangkalan Data:
Pangkalan data termasuk jadual ini:
advertisers
:
advertiser_id
(kunci utama)name
, password
, email
, address
, phone
, fax
, session_token
advertisers_ibfk_1
merujuk jobs.advertiser_id
jobs
:
job_id
(kunci utama)advertiser_id
(kunci asing)name
, shortdesc
, longdesc
, address
, time_added
, active
, moderated
Penyelesaian: Nyahaktifkan Kekangan Utama Asing buat sementara waktu
Penyelesaian melibatkan melumpuhkan sementara semakan kunci asing untuk membenarkan pemadaman, kemudian membolehkannya semula untuk mengekalkan integriti data:
<code class="language-sql">SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checks DELETE FROM `jobs` WHERE `job_id` = 1 LIMIT 1; -- Delete the problematic job record SET FOREIGN_KEY_CHECKS = 1; -- Re-enable foreign key checks</code>
Kaedah ini membolehkan pemadaman sambil mengekalkan integriti rujukan keseluruhan pangkalan data. Ingat untuk mempertimbangkan dengan teliti implikasi melumpuhkan semakan kunci asing dan hanya gunakan pendekatan ini apabila benar-benar perlu.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memadam Rekod Kerja: Pelanggaran Kekangan Utama Asing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!