Laravel迁移附加外键约束的格式不正确

时间:2020-04-03 12:45:21

标签: laravel laravel-7

尝试迁移文件,但不断获得: (错误号:150“外键约束的格式不正确”)(SQL:更改表permission_role_permission_id_foreign添加约束permission_id外键(permissions)引用id({{1} })删除级联上)

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddForeignKeys extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
        Schema::table('permission_role', function(Blueprint $table) {
            $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        });
        Schema::table('role_user', function(Blueprint $table){
            $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        }); 
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}


1 个答案:

答案 0 :(得分:0)

首先,您应该分离所有迁移。确保首先创建rolesuserspermissions表(每个表都应具有自己的迁移)。然后继续创建其他对象。

错误:150“外键约束的格式不正确”)(SQL:更改表permit_role添加约束permission_role_permission_id_foreign外键(permission_id)引用了删除级联上的许可权(id))

发生此错误是因为尚未创建permissions表,因此您不能在外键中引用它。