Kekangan Kunci Asing MySQL: Mengelakkan Ralat Errno 150
Semasa mencipta jadual dalam MySQL dengan kunci asing merujuk jadual lain, anda mungkin menghadapi errno: ralat 150. Untuk menyelesaikan isu ini, adalah penting untuk mematuhi garis panduan berikut:
-
Pastikan Susunan Jadual: Tentukan jadual induk yang mengandungi kunci utama sebelum mencipta jadual anak dengan kunci asing rujukan.
-
Dayakan Sokongan Kunci Asing: Kedua-dua jadual ibu bapa dan anak harus menyokong kunci asing kekangan, biasanya dengan menggunakan enjin storan InnoDB.
-
Kunci Lajur Paling Kiri: Lajur yang dirujuk dalam jadual induk mestilah lajur paling kiri bagi sesuatu kunci, sebaik-baiknya KUNCI UTAMA atau KUNCI UNIK.
-
Padanan Susunan Kunci Utama: Takrifan FK mesti sejajar dengan definisi PK dari segi susunan lajur dan jenis data.
-
Penjajaran Data yang Betul: Lajur PK dalam jadual induk dan lajur FK dalam jadual anak mesti sepadan dari segi jenis data dan penyusunan.
-
Keserasian Data Sedia Ada: Jika jadual anak mengandungi data, pastikan bahawa setiap nilai lajur FK sepadan dengan nilai yang sepadan dalam lajur PK jadual induk.
-
Elakkan Jadual Sementara atau Separa: Kekangan kunci asing tidak boleh ditakrifkan pada jadual SEMENTARA atau DIPARTI.
-
Lajur Boleh Null: Jika SET ON DELETE Pilihan NULL digunakan, lajur FK mesti boleh dibatalkan.
-
Nama Kekangan Unik: Kekangan kunci asing harus mempunyai nama unik merentas skema untuk mengelakkan konflik.
-
Kunci Asing Bergantung: Jika FK yang cacat wujud dalam jadual lain yang merujuk medan yang sama dalam jadual induk, pastikan konsisten sebelum membuat FK baharu. Gunakan pertanyaan berikut untuk mengenal pasti FK yang bermasalah:
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = 'your_schema_name'
AND CONSTRAINT_NAME <> 'PRIMARY' AND REFERENCED_COLUMN_NAME IS NOT NULL;
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat MySQL Errno 150 Apabila Menggunakan Kekangan Utama 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