php - Laravel 创建复合外键时出错

标签 php mysql laravel eloquent composite-primary-key

我需要构建一个名为“slides”的表,其中包含名为“id”和“work_id”的两列。 ID 不是 AUTO_INCRMENT 整数,因为我需要将数字保留为幻灯片中的索引。

这是运行“php artisan migrate”时显示的错误: Error

这是我的代码:

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');
});

这是我的“作品”表的结构: Works Table

这是尽管发生错误但生成的“幻灯片”表的结构: Slides Table

我不明白错误消息,因为我对 SQL 不太熟悉,所以有人可以告诉我导致输出此错误的代码有什么问题吗?谢谢。

最佳答案

我不确定 Eloquent 如何(如果有的话)处理复合键。也就是说,您的错误消息来自 MySQL。神秘错误 150 通常与格式错误的外键约束有关。

如果您遇到上述情况,则 slides 中的 work_id 外键与您尝试的 id 类型不同与之匹配。虽然两列都是 int,其中一列是 int(10),另一列是 int(11)。它还显示一个是 UNSIGNED ,另一个是已签名的。

如果您可以调整迁移以使两列相同,您应该能够解决这个特定的外键问题。

关于php - Laravel 创建复合外键时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26185429/

相关文章:

php - $_SERVER 变量的编码,如 $_SERVER ['REQUEST_URI' ]

javascript - 创建数组还是直接从数据库?

mysql - 2 个表上的 INNER JOIN 返回错误值

laravel - 错误: Script php artisan clear-compiled handling the post-install-cmd event returned with an error

php - 当您没有该功能的指定模型时,将业务逻辑放在哪里?拉维尔

javascript - 更改全局变量的 html 界面

php - 如何从字段列表创建动态查询?

mysql - 我该如何重构这个 MySQL 查询?

php - 如何在docker容器中连接我的主机mysql?

mysql - 从 Laravel 中的现有列插入新列