Kod Ralat: 1005. Tidak Dapat Mencipta Jadual: Analisis Terperinci
Apabila menghadapi Kod Ralat 1005 semasa mencipta kunci asing dengan skrip berikut:
ALTER TABLE sira_no
ADD CONSTRAINT METAL_KODU FOREIGN KEY(METAL_KODU)
REFERENCES metal_kod(METAL_KODU)
ON DELETE SET NULL
ON UPDATE SET NULL ;
Salin selepas log masuk
Adalah penting untuk memahami sebab asas di sebalik ini ralat.
Mesej ralat, "Tidak boleh membuat jadual 'ebs.#sql-f48_1a3' (errno: 150)," biasanya menunjukkan bahawa terdapat masalah dengan rujukan kunci utama. Untuk menyelesaikan masalah ini, adalah penting untuk memastikan bahawa:
-
Jenis data dan saiz medan utama adalah sama:
Pastikan jenis dan saiz sepadan dengan tepat. Sebagai contoh, INT(10) dan BIGINT tidak serasi. Begitu juga, medan BERTANDA dan TIDAK BERTANDA hendaklah dipadankan dengan sewajarnya.
-
Medan yang berkaitan mempunyai indeks yang sesuai:
Perhubungan kunci asing memerlukan indeks atau kunci utama pada medan yang dirujuk. Jika medan yang dirujuk tidak mempunyai indeks, buat satu untuk mewujudkan kekangan.
-
Nama kunci asing adalah unik:
Nama kunci asing pendua boleh mengakibatkan ralat. Sahkan bahawa nama kunci asing adalah unik dalam pangkalan data dengan menambahkan aksara rawak pada penghujungnya.
-
Jadual adalah daripada jenis InnoDB:
Kekangan kunci asing memerlukan kedua-dua jadual yang terlibat menjadi InnoDB meja. Jadual MyISAM tidak boleh menyokong kekunci asing.
-
Pilihan lata dan kebolehbatalan medan adalah serasi:
Jika tindakan ON DELETE atau ON UPDATE ditetapkan kepada CASCADE, medan yang dirujuk tidak boleh mempunyai NOT NULL kekangan.
-
Pilihan Charset dan Pengumpulan ialah konsisten:
Pastikan bahawa parameter Charset dan Collation adalah sama untuk kedua-dua jadual dan lajur utama dalam perhubungan.
-
Nilai lalai pada lajur kunci asing tidak ada:
Lajur kunci asing tidak sepatutnya mempunyai nilai lalai yang ditentukan.
-
Kunci komposit dengan indeks yang berasingan diperlukan:
Jika medan rujukan adalah sebahagian daripada kunci komposit, ia mesti mempunyai indeksnya sendiri, berasingan daripada indeks komposit.
Menyemak punca yang disenaraikan dengan teliti dan menangani sebarang percanggahan harus menyelesaikan Kod Ralat 1005. Untuk butiran lanjut, rujuk dokumentasi MySQL mengenai Nombor Ralat 1005: Tidak boleh membuat jadual.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Kod Ralat MySQL 1005: Tidak Dapat Mencipta Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!