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

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

Linda Hamilton
Linda Hamiltonasal
2024-10-26 22:36:31626semak imbas

 Why Am I Getting MySQL Error 1215:

MySQL Ralat 1215: "Tidak boleh menambah kekangan kunci asing"

Apabila cuba mencipta kekangan kunci asing dalam MySQL, adalah penting untuk memastikan bahawa kedua-dua medan yang dirujuk dan medan kunci asing mematuhi keperluan khusus. Begini cara untuk mendiagnosis dan menyelesaikan ralat ini:

Ketekalan Enjin

  • Enjin "InnoDB" mesti digunakan untuk kedua-dua jadual yang terlibat.

Jenis dan Panjang Data

  • Jenis data dan panjang kedua-dua medan hendaklah sepadan dengan tepat. Contohnya, jika medan yang dirujuk ialah VARCHAR(20), medan kunci asing juga hendaklah VARCHAR(20).

Pengumpulan

  • Pengumpulan menunjukkan set aksara dan peraturan pengisihan. Kedua-dua medan hendaklah menggunakan pengumpulan yang sama, seperti utf8.

Keunikan

  • Medan yang dirujuk mestilah unik, selalunya ditandakan oleh primer atau unik kunci. Medan kunci asing tidak boleh merujuk medan yang membenarkan nilai pendua.

Null Handling

  • Pastikan anda belum menentukan keadaan SET NULL apabila beberapa lajur yang dirujuk diisytiharkan BUKAN NULL.

Simptom Tambahan

Jika ralat berterusan, jalankan arahan SHOW ENGINE INNODB STATUS; untuk mendedahkan butiran yang lebih spesifik.

Pernyataan Salah

Pernyataan SQL yang disediakan mencipta jadual bernama "kursus" dengan kekangan kunci asing yang merujuk jadual "jabatan" pada medan "dept_name". Walau bagaimanapun, pernyataan ini tidak betul kerana ia tidak mempunyai spesifikasi datatype untuk medan "dept_name". Untuk membetulkan perkara ini, kenyataan itu hendaklah diubah suai seperti berikut:

<code class="sql">create table course (
    course_id varchar(7),
    title varchar(50),
    dept_name varchar(20),
    credits numeric(2,0),
    primary key(course_id),
    foreign key (dept_name) references department(dept_name)
);</code>

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 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