Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Ralat Kunci Asing MySQL 1215: \'Tidak boleh menambah kekangan kunci asing\'?

Mengapa Saya Mendapat Ralat Kunci Asing MySQL 1215: \'Tidak boleh menambah kekangan kunci asing\'?

Susan Sarandon
Susan Sarandonasal
2024-11-25 14:08:13858semak imbas

Why Am I Getting MySQL Foreign Key Error 1215:

Menyelesaikan Masalah Ralat Kunci Asing MySQL: 1215

Apabila cuba menambah kekangan kunci asing dalam MySQL, anda mungkin menghadapi Kod Ralat: 1215 yang menunjukkan "Tidak boleh menambah kekangan kunci asing (kunci asing)." Ralat ini biasanya berlaku disebabkan oleh ketidakpadanan jenis data atau isu struktur.

Ketidakpadanan Jenis Data

Salah satu punca yang mungkin ialah ketidakpadanan dalam jenis data antara lajur yang merujuk kepada kunci asing dan lajur yang dirujuk. Sebagai contoh, jika lajur ClassLeader dalam jadual kelas mempunyai jenis data VARCHAR(255) manakala lajur ID pelajar yang dirujuk dalam jadual pelajar ialah INT, kekangan kunci asing akan gagal. Jenis data kedua-dua lajur mestilah sama.

Isu Struktur

Jika jenis data sepadan, isu itu mungkin terletak pada percanggahan struktur antara jadual. Terutama:

  • Jadual yang dirujuk (pelajar dalam kes ini) mesti wujud.
  • Lajur yang dirujuk (ID pelajar) mesti wujud dalam jadual yang dirujuk.
  • Yang dirujuk lajur (ID pelajar) hendaklah menjadi kunci utama atau kunci unik bagi jadual yang dirujuk (walaupun dalam MySQL, indeks boleh memadai).

Contoh

-- Create student table
CREATE TABLE student (
  studentID int NOT NULL AUTO_INCREMENT,
  lastName varchar(255),
  firstName varchar(255),
  PRIMARY KEY (studentID)
);

-- Create class table
CREATE TABLE class (
  classID int NOT NULL AUTO_INCREMENT,
  nameClass varchar(255),
  classLeader int,  -- Change to INT to match studentID type
  FOREIGN KEY (classLeader) REFERENCES student(studentID),
  PRIMARY KEY (classID)
);

Kunci Asing lwn. Kunci

Kunci asing tidak dipertimbangkan kunci tradisional (seperti kunci utama atau unik) yang mengenal pasti baris dalam jadual secara unik. Sebaliknya, tujuan utama mereka adalah untuk memastikan integriti rujukan dan mengekalkan hubungan antara jadual. Dengan menguatkuasakan kunci asing, anda boleh mengelakkan ketidakkonsistenan dan data yatim.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Kunci Asing MySQL 1215: \'Tidak boleh menambah kekangan kunci asing\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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