Ralat Kunci Asing MySQL 1005 errno 150: Menyelesaikan Kunci Utama sebagai Isu Kunci Asing
Kekangan kunci asing MySQL menguatkuasakan integriti data dengan merujuk dalam jadual lain. Walau bagaimanapun, apabila menggunakan kunci utama sebagai kunci asing, anda mungkin menghadapi ralat 1005. Ralat ini berlaku apabila jadual yang dirujuk tidak mempunyai indeks yang boleh digunakan untuk lajur yang dirujuk.
Bolehkah Kunci Utama menjadi Asing Kunci?
Ya, kunci utama juga boleh menjadi kunci asing. Ini adalah amalan biasa dalam reka bentuk pangkalan data, kerana ia memastikan bahawa jadual rujukan mengandungi hanya data yang sah dan mengekalkan integriti rujukan perhubungan.
Menyelesaikan Ralat 1005
Untuk menyelesaikan ralat 1005, anda perlu mencipta indeks pada lajur yang dirujuk dalam jadual yang dirujuk. Indeks ini membolehkan MySQL mencari rekod yang dirujuk dengan cekap. Begini cara anda boleh menyelesaikan isu dalam kes khusus anda:
ALTER TABLE Immobile ADD PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`);
Dengan menambahkan kunci utama, lajur akan diindeks secara automatik. Ini memastikan bahawa kunci asing dalam jadual lain (Condoni) boleh merujuk rekod yang betul dalam jadual Immobile.
Penyelesaian Alternatif
Jika mencipta indeks pada utama kunci tidak boleh dilaksanakan, sebaliknya anda boleh menggunakan kunci asing komposit. Ini bermakna menggunakan berbilang lajur daripada kunci utama sebagai rujukan kunci asing. Dalam kes ini, anda akan mencipta kunci asing berikut:
ALTER TABLE Condoni ADD FOREIGN KEY (`ComuneImmobile`, `ViaImmobile`) REFERENCES Immobile (`ComuneImmobile`, `ViaImmobile`);
Kunci asing komposit ini akan menguatkuasakan integriti rujukan tanpa memerlukan indeks pada kunci primer.
Dengan melaksanakan ini penyelesaian, anda boleh mewujudkan perhubungan yang diingini antara jadual pangkalan data anda dan mengelakkan ralat 1005 apabila menggunakan kunci utama sebagai rujukan kunci asing.
Atas ialah kandungan terperinci Bolehkah Kunci Utama Juga Berkhidmat sebagai Kunci Asing, dan Bagaimana Saya Membetulkan Ralat MySQL 1005?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!