Menyelesaikan Ralat Kekangan Kunci Asing: "Ralat dalam jenis data medan anak semasa menambah kekangan kunci asing"
Panduan ini menangani ralat SQL biasa "ERROR 1215 (HY000): Tidak boleh menambah kekangan kunci asing" apabila mencipta perhubungan kunci asing antara jadual 'Pesakit', 'Temujanji' dan 'Sejarah Perubatan'. Punca utama biasanya adalah jenis ketidakpadanan antara lajur anak dan ibu bapa yang terlibat dalam kekangan.
Berikut ialah cara untuk mendiagnosis dan membetulkan masalah:
Pengesahan Jenis Data: Periksa dengan teliti jenis data lajur yang berkaitan: Pastikan lajur 'Sejarah Perubatan' dalam jadual 'Pesakit' sepadan dengan tepat dengan lajur 'MedicalHistoryID' dalam jadual 'Sejarah Perubatan'. Begitu juga, sahkan bahawa lajur 'Pesakit' dalam jadual 'Temu janji' betul-betul mencerminkan lajur 'ID Pesakit' dalam jadual 'Pesakit'. Walaupun perbezaan kecil (cth., INT lwn. SMALLINT, VARCHAR(255) lwn. VARCHAR(256)) akan menghalang kekangan daripada ditambah.
Melumpuhkan Semakan Kunci Asing Sementara: Sebelum menjalankan ALTER TABLE
kenyataan anda untuk menambah kunci asing, laksanakan SET FOREIGN_KEY_CHECKS=0;
. Ini melumpuhkan semakan kunci asing buat sementara waktu, membenarkan pembuatan jadual dalam sebarang susunan. Ingat untuk mendayakannya semula selepas itu dengan SET FOREIGN_KEY_CHECKS=1;
.
Analisis Ralat Terperinci: Gunakan SHOW ENGINE INNODB STATUS;
untuk memeriksa bahagian 'KESILAPAN KUNCI ASING TERKINI'. Ini memberikan butiran khusus tentang kekangan yang gagal, menunjukkan dengan tepat lajur yang menyebabkan isu tersebut.
Contoh Ilustrasi: Jika 'MedicalHistoryID' dalam jadual 'MedicalHistory' ditakrifkan sebagai INT
, maka 'MedicalHistory' dalam jadual 'Pesakit' mesti juga INT
, bukan SMALLINT
atau apa-apa jenis lain.
Dengan membandingkan jenis data dengan teliti dan menggunakan alat diagnostik yang dinyatakan di atas, anda boleh menyelesaikan ralat kekangan kunci asing ini dengan berkesan dan mewujudkan hubungan yang betul antara jadual anda. Ingat untuk mendayakan semula semakan kunci asing (SET FOREIGN_KEY_CHECKS=1;
) selepas membuat kekangan anda.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Ralat dalam jenis data medan kanak-kanak semasa menambah kekangan kunci asing'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!