Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Masalah 'Tidak boleh menambah kekangan kunci asing' Ralat dalam MySQL?

Bagaimana untuk Menyelesaikan Masalah 'Tidak boleh menambah kekangan kunci asing' Ralat dalam MySQL?

Barbara Streisand
Lepaskan: 2025-01-18 20:17:12
asal
917 orang telah melayarinya

How to Troubleshoot

Panduan Penyelesaian Ralat Kekangan Kunci Asing MySQL

Pengenalan

Apabila mewujudkan kekangan kunci asing untuk jadual dalam pangkalan data, ralat mungkin ditemui semasa penciptaan atau pengubahsuaian. Satu ralat sedemikian ialah "ERROR 1215 (HY000): Tidak boleh menambah kekangan kunci asing".

Kes: Isu kekangan utama asing dalam jadual Pesakit dan Janji Temu

Pertanyaan SQL berikut mengalami ralat semasa cuba menambah kekangan kunci asing pada jadual Pesakit dan Janji Temu:

<code class="language-sql">CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Patient` (
...
  CONSTRAINT `FK_MedicalHistory`
    FOREIGN KEY (`MedicalHistory`)
    REFERENCES `doctorsoffice`.`medicalhistory` (`MedicalHistoryID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `FK_PrimaryPhysician`
    FOREIGN KEY (`PrimaryPhysician`)
    REFERENCES `doctorsoffice`.`doctor` (`DoctorID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Appointment` (
...
  CONSTRAINT `FK_Patient`
    FOREIGN KEY (`Patient`)
    REFERENCES `doctorsoffice`.`Patient` (`PatientID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `FK_Doctor`
    FOREIGN KEY (`Doctor`)
    REFERENCES `doctorsoffice`.`doctor` (`DoctorID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);</code>
Salin selepas log masuk

Penyelesaian: Sahkan keserasian jenis data

Untuk menyelesaikan isu ini, sahkan bahawa jenis data lajur yang terlibat dalam kekangan kunci asing adalah serasi. Dalam kes ini, pastikan anda:

  • Jenis data lajur MedicalHistory dalam jadual Pesakit betul-betul sepadan dengan lajur MedicalHistoryID dalam jadual medicalhistory, iaitu kedua-duanya hendaklah daripada jenis INT.
  • Jenis data lajur Doktor Utama dalam jadual Pesakit sepadan dengan jenis data lajur DoctorID dalam jadual doktor, kedua-duanya hendaklah daripada jenis SMALLINT.

Selepas membetulkan ketidakpadanan jenis data ini, anda boleh berjaya menambah kekangan kunci asing.

Petua Tambahan: Lumpuhkan pemeriksaan kunci asing

Untuk menambah lebih fleksibiliti semasa membuat jadual dalam susunan tertentu, pertimbangkan untuk menggunakan arahan berikut sebelum melaksanakan pertanyaan SQL:

<code class="language-sql">SET foreign_key_checks=0;</code>
Salin selepas log masuk

Arahan ini melumpuhkan semakan kunci asing buat sementara waktu, membenarkan jadual dibuat tanpa mengira kebergantungan jadual ibu bapa-anak. Selepas jadual dibuat, semakan kunci asing boleh didayakan semula menggunakan arahan berikut:

<code class="language-sql">SET foreign_key_checks=1;</code>
Salin selepas log masuk

Dengan mengikuti garis panduan ini, anda boleh memastikan bahawa kekangan kunci asing dilaksanakan dengan betul dalam pangkalan data anda, mencegah ralat dan mengekalkan integriti data.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah 'Tidak boleh menambah kekangan kunci asing' Ralat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan