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
Lepaskan: 2024-10-26 22:36:31
asal
677 orang telah melayarinya

 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>
Salin selepas log masuk

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