Ralat Kunci Asing MySql 150: Enigma Membingungkan
Apabila cuba mencipta jadual "foo" dan "bar" dengan hubungan kunci asing , anda menghadapi ralat 1005 (HY000) dengan merujuk kepada ralat 150. Ralat ini boleh mengecewakan, meninggalkan anda bingung tentang puncanya.
Menurut dokumentasi MySQL mengenai Kekangan KUNCI ASING, masalah timbul apabila mencipta semula jadual yang dijatuhkan yang mempunyai rujukan kunci asing. Jadual mesti mematuhi kekangan kunci asing dengan mempunyai nama dan jenis lajur yang sepadan, serta indeks pada kunci yang dirujuk. Jika syarat ini tidak dipenuhi, MySQL mengembalikan ralat 1005, dengan ralat asas 150.
Kemungkinan ralat anda disebabkan oleh fakta bahawa jadual "foo" tidak ditakrifkan sebagai jadual InnoDB. Dokumentasi MySQL secara eksplisit menyatakan bahawa kedua-dua jadual mestilah jadual InnoDB dan bukan sementara.
Dengan mengubah suai pertanyaan penciptaan jadual "foo" untuk menentukan enjin InnoDB:
mysql> CREATE TABLE foo(id INT PRIMARY KEY) ENGINE=InnoDB;
Anda seharusnya berjaya mencipta jadual "bar" dengan kekangan kunci asing, menyelesaikan ralat 150.
Atas ialah kandungan terperinci Ralat MySQL 150 & 1005: Mengapa Saya Tidak Boleh Mencipta Perhubungan Utama Asing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!