Kode Kesalahan:1005 -- ada referensi kunci utama yang salah dalam kode Anda
Biasanya karena bidang kunci asing yang direferensikan tidak ada. Mungkin Anda memiliki kesalahan ketik, atau periksa kasusnya harus sama, atau ada ketidakcocokan jenis bidang. Bidang terkait kunci asing harus sama persis dengan definisi.
Beberapa penyebab yang diketahui mungkin:
- Jenis dan/atau ukuran dua bidang utama tidak sama persis. Misalnya, jika salah satunya adalah
INT(10)
bidang kunci harusINT(10)
juga dan bukanINT(11)
atauTINYINT
. Anda mungkin ingin mengonfirmasi ukuran bidang menggunakanSHOW
CREATE
TABLE
karena Browser Kueri terkadang hanya menampilkanINTEGER
untuk keduanyaINT(10)
danINT(11)
. Anda juga harus memeriksa bahwa yang satu tidakSIGNED
dan yang lainnyaUNSIGNED
. Keduanya harus persis sama. - Salah satu bidang kunci yang Anda coba rujuk tidak memiliki indeks dan/atau bukan kunci utama. Jika salah satu bidang dalam hubungan bukan kunci utama, Anda harus membuat indeks untuk bidang tersebut.
- Nama kunci asing adalah duplikat dari kunci yang sudah ada. Periksa apakah nama kunci asing Anda unik dalam database Anda. Cukup tambahkan beberapa karakter acak di akhir nama kunci Anda untuk mengujinya.
- Satu atau kedua tabel Anda adalah
MyISAM
meja. Untuk menggunakan kunci asing, tabel keduanya harusInnoDB
. (Sebenarnya, jika kedua tabel adalahMyISAM
maka Anda tidak akan mendapatkan pesan kesalahan - itu hanya tidak akan membuat kunci.) Di Browser Kueri, Anda dapat menentukan jenis tabel. - Anda telah menentukan kaskade
ON
DELETE
SET
NULL
, tetapi bidang kunci yang relevan disetel keNOT
NULL
. Anda dapat memperbaikinya dengan mengubah kaskade atau menyetel bidang untuk mengizinkanNULL
nilai. - Pastikan bahwa opsi Charset dan Collate sama baik di tingkat tabel maupun tingkat bidang individual untuk kolom kunci.
- Anda memiliki nilai default (yaitu, default=0) pada kolom kunci asing
- Salah satu bidang dalam hubungan adalah bagian dari kunci kombinasi (gabungan) dan tidak memiliki indeks individualnya sendiri. Meskipun bidang memiliki indeks sebagai bagian dari kunci komposit, Anda harus membuat indeks terpisah hanya untuk bidang kunci tersebut agar dapat menggunakannya dalam batasan.
- Ada kesalahan sintaks di
ALTER
. Anda pernyataan atau Anda salah mengetik salah satu nama bidang dalam hubungan - Nama kunci asing Anda melebihi panjang maksimum 64 karakter.
Untuk detail lebih lanjut, lihat:Nomor Kesalahan MySQL 1005 Tidak dapat membuat tabel