[英]Laravel Error when creating composite foreign key
我需要構建一個名為“幻燈片”的表,其中包含名為“ id”和“ work_id”的兩列。 該ID不是AUTO_INCREMENT整數,因為我需要將數字保留為幻燈片放映中的索引。
這是運行“ php artisan migration”時顯示的錯誤:
這是我的代碼:
Schema::create('slides', function(Blueprint $table) {
$table->integer('id');
$table->integer('work_id');
$table->primary(['id', 'work_id']);
$table->foreign('work_id')->references('id')->on('works');
});
這是我的“作品”表的結構:
這是盡管發生錯誤但仍生成的“幻燈片”表的結構:
我不明白該錯誤消息,因為我不太懂SQL,所以有人可以告訴我輸出該錯誤的代碼有什么問題嗎? 謝謝。
我不確定Eloquent如何處理復合鍵(如果有的話)。 就是說,您的錯誤消息來自MySQL。 隱秘錯誤150通常與格式錯誤的外鍵約束有關。
如果是上述情況,則slides
的work_id
外鍵看起來與您要與其匹配的id
類型不同。 雖然兩列都是int
,但一列是int(10)
,另一列是int(11)
。 它還顯示一個是未UNSIGNED
,另一個是已簽名的。
如果您可以擺弄遷移,使兩列都相同,那么您應該能夠解決此特定的外鍵問題。
我想到的唯一可能會出現問題的事情是您的主鍵。
您應該嘗試更改:
$table->primary(['id', 'work_id']);
成
$table->primary('id');
檢查它現在是否正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.