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:
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
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!