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 menggunakanSHOWCREATETABLEkarena Browser Kueri terkadang hanya menampilkanINTEGERuntuk keduanyaINT(10)danINT(11). Anda juga harus memeriksa bahwa yang satu tidakSIGNEDdan 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
MyISAMmeja. Untuk menggunakan kunci asing, tabel keduanya harusInnoDB. (Sebenarnya, jika kedua tabel adalahMyISAMmaka Anda tidak akan mendapatkan pesan kesalahan - itu hanya tidak akan membuat kunci.) Di Browser Kueri, Anda dapat menentukan jenis tabel. - Anda telah menentukan kaskade
ONDELETESETNULL, tetapi bidang kunci yang relevan disetel keNOTNULL. Anda dapat memperbaikinya dengan mengubah kaskade atau menyetel bidang untuk mengizinkanNULLnilai. - 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