首页 > 解决方案 > 无法在 laravel 迁移中创建关系

问题描述

我正在尝试在成员表中的“user_id”和用户表中的“id”之间建立关系。得到 errno: 150 “外键约束的格式不正确”。我在成员表之前迁移用户表。

$table->integer('user_id')->unsigned()->nullable();
   $table->foreign('user_id')->references('id')->on('users');

标签: laravelforeign-keysdatabase-migration

解决方案


您的语法是正确的,因此它可能是几个问题之一:

  1. 您的users表实际上并未被调用users
  2. 您实际上是在用户迁移之前创建了成员迁移,然后返回并编辑了成员迁移。Laravel 按照文件名中时间戳的顺序运行迁移,因此您需要编辑成员迁移的文件名,或者创建一个包含外键定义的新迁移。
  3. 您正在尝试在现有数据库之上运行现有迁移。运行php artisan migrate:refresh以将所有内容回滚并重新运行。请注意,这会破坏您的所有数据,因此请确保它处于测试环境中。

推荐阅读