Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat Kekangan Kunci Asing MySQL Apabila Menambah Kunci Asing?

Bagaimana untuk Menyelesaikan Ralat Kekangan Kunci Asing MySQL Apabila Menambah Kunci Asing?

DDD
DDDasal
2024-11-30 15:58:14984semak imbas

How to Resolve MySQL Foreign Key Constraint Errors When Adding a Foreign Key?

Membetulkan Ralat Penambahan Kunci Asing dalam Jadual MySQL

Isu:

Anda ingin menambah kunci asing pada yang sedia ada Jadual MySQL tetapi menemui perkara berikut ralat:

***Error Code: 1005. Can't create table 'mytable.#sql-7fb1_7d3a' (errno: 150)***
***Error in foreign key constraint of table mytable.#sql-7fb1_7d3a:***
FOREIGN KEY (`Sprache`) REFERENCES `Sprache` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL:

Penyelesaian:

Untuk menyelesaikan ralat, pastikan jadual yang anda rujuk benar-benar wujud dan mempunyai nama lajur yang betul. Ralat menunjukkan bahawa jadual Sprache tidak wujud atau tidak mempunyai lajur bernama ID.

Pertanyaan Disemak:

ALTER TABLE katalog
ADD CONSTRAINT fk_katalog_sprache
FOREIGN KEY (`Sprache`)
REFERENCES Sprache(ID)
ON DELETE SET NULL
ON UPDATE SET NULL;

Nota Tambahan:

  • Kedua-dua jadual (katalog dan Sprache) mestilah InnoDB dan mempunyai jenis data yang sepadan (INT(11) dan NOT NULL) untuk lajur yang dirujuk.
  • Lajur kunci asing (Sprache) dalam jadual katalog tidak boleh mengandungi sebarang nilai NULL sebelum menambah kekangan.
  • Lajur yang dirujuk lajur (ID dalam kes ini) dalam jadual Sprache hendaklah menjadi yang utama kunci.

Sintaks Penambahan Kunci Asing Am:

ALTER TABLE <table_name>
ADD FOREIGN KEY (<column_name>)
REFERENCES <foreign_table_name>(<foreign_column_name>);

Dengan mengikuti arahan yang disemak ini, anda sepatutnya berjaya menambah kunci asing pada jadual katalog dalam MySQL.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Kekangan Kunci Asing MySQL Apabila Menambah Kunci 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