簡體   English   中英

創建復合外鍵時出現Laravel錯誤

[英]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通常與格式錯誤的外鍵約束有關。

如果是上述情況,則slideswork_id外鍵看起來與您要與其匹配的id類型不同。 雖然兩列都是int ,但一列是int(10) ,另一列是int(11) 它還顯示一個是未UNSIGNED ,另一個是已簽名的。

如果您可以擺弄遷移,使兩列都相同,那么您應該能夠解決此特定的外鍵問題。

我想到的唯一可能會出現問題的事情是您的主鍵。

您應該嘗試更改:

$table->primary(['id', 'work_id']);

$table->primary('id');

檢查它現在是否正常工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM