我需要建立一个名为'幻灯片的表格。它包含两列名为' id'和' work_id'。 ID不是AUTO_INCREMENT整数,因为我需要将数字作为幻灯片中的索引。
这是运行' php artisan migrate'时显示的错误:
这是我的代码:
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不是很流利,所以有人能告诉我代码导致输出此错误的错误是什么?感谢。
答案 0 :(得分:1)
我不知道Eloquent如何处理复合键。也就是说,您的错误消息来自MySQL。隐秘错误150通常与错误形成的外键约束有关。
如果您的情况如上,则work_id
中的slides
外键与您尝试匹配的id
的外键不同。虽然两列都是int
,但其中一列是int(10)
,另一列是int(11)
。它还显示一个是UNSIGNED
,另一个是签名。
如果你可以摆弄你的迁移,那么两个列都是相同的,你应该能够解决这个特定的外键问题。
答案 1 :(得分:0)
我脑海中唯一可能出现问题的是你的主要钥匙。
您应该尝试更改:
$table->primary(['id', 'work_id']);
到
$table->primary('id');
检查它现在是否正常工作