- 其中一個或者兩個表是MyISAM引擎的表,若想要使用外鍵約束,
必須是InnoDB引擎,(實際上,如果兩個表都是MyISAM 引擎的,
這個錯誤根本不會發生,但也不會產生外鍵),你可以通過查詢瀏
覽器來設置表的引擎類型.
2.若出現[MySQL] - errno:150,可能:
可能設置了ON DELETE(刪除時) SET NULL, 但是相關的鍵的字段又設置成了NOTS NULL 值。
你可能通過修改cascade 的屬性值或者把字段屬性設置成 allow null 來搞定這個bug.
cascade方式
在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄
set null方式
在父表上update/delete記錄時,將子表上匹配記錄的列設爲null
要注意子表的外鍵列不能爲not null
No action方式
如果子表中有匹配的記錄,則不允許對父表對應候選鍵進行update/delete操作
Restrict方式
同no action, 都是立即檢查外鍵約束
Set default方式
父表有變更時,子表將外鍵列設置成一個默認的值 但Innodb不能識別