Laravel 5.5 遷移報錯:General error: 1215 Cannot add foreign key constraint


問題

之前一直用的 Laravel 5.4,數據庫也是直接寫 sql 的,感覺可定制性更強,順便鍛煉下 sql。這次改用了 Laravel 5.5,索性用遷移建庫試試,結果報錯如下:

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `users` add constraint `users_production_enterprise_id_foreign` foreign key (`production_enterprise_id`) references `production_enterprises` (`id`))

 

解決

看樣子是不能添加約束。然后我做了以下幾步檢查:

  1. 確認存儲引擎支持外鍵約束(MyISAM 不支持)
  2. 確認外鍵約束的主、副表數據類型嚴格一致
  3. 副表添加外鍵時,確認要參考的主表及其目標字段已存在

按照第 3 步,由於 Laravel 的遷移文件名為 "2018_04_15_101341_create_users_table" 的前綴時間戳格式,所以我修改了要參考主表字段的那些文件的時間戳,讓那些主表被優先創建。

網上看到也有改動 Laravel 框架源碼的做法,我不太喜歡,也不推薦。總之,問題解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM