Laravel - 外键约束的格式不正确

Posted

技术标签:

【中文标题】Laravel - 外键约束的格式不正确【英文标题】:Laravel - Foreign key constraint is incorrectly formed 【发布时间】:2017-10-04 20:12:43 【问题描述】:

我正在尝试在 laravel 中创建表 'teams' 和 'competitions' 但是当我运行 migrate 命令时,我得到以下信息: errno: 150 "Foreign key constraint is wrongly forms"

Schema::create('competitions', function (Blueprint $table) 
                    $table->increments('id');
                    $table->string('name')->unique();
                    $table->string('team_name');
                    $table->foreign('team_name')->references('name')->on('teams')->onDelete('cascade');
                    $table->timestamps();
        );

Schema::create('teams', function (Blueprint $table) 
                    $table->increments('id');
                    $table->string('name')->unique();
                    $table->string('place');
                    $table->string('competition')->nullable();;
                    $table->foreign('competition')->references('name')->on('competitions')->onDelete('set null');
                    $table->timestamps();
);

【问题讨论】:

【参考方案1】:

主键外键必须使用相同的属性

eg. 两者都有 ->nullable() 或没有。

另外,请确保两个表及其列的排序规则相同。

【讨论】:

以上是关于Laravel - 外键约束的格式不正确的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 上的“外键约束格式不正确”

Laravel 迁移错误号:150“外键约束格式不正确”

Laravel 迁移错误:150“外键约束格式不正确”

laravel errno 150 外键约束格式不正确

Laravel 抛出 errno:150 “外键约束的格式不正确”,尽管语法正确

Laravel 迁移:Errcode:150“外键约束格式不正确”