Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复此错误错误错误号:150“;“外键约束格式不正确”;_Php_Mysql_Laravel_Acl_Laravel 6 - Fatal编程技术网

Php 如何修复此错误错误错误号:150“;“外键约束格式不正确”;

Php 如何修复此错误错误错误号:150“;“外键约束格式不正确”;,php,mysql,laravel,acl,laravel-6,Php,Mysql,Laravel,Acl,Laravel 6,我想在laravel中迁移acl迁移,但出现了此错误 错误 150“外键约束格式不正确” 表格 public function up() { Schema::create('roles', function (Blueprint $table) { $table->Increments('id'); $table->string('title_fa'); $table->stri

我想在laravel中迁移acl迁移,但出现了此错误

错误

150“外键约束格式不正确”

表格

public function up()
    {


        Schema::create('roles', function (Blueprint $table) {
            $table->Increments('id');
            $table->string('title_fa');
            $table->string('title_en');
            $table->timestamps();
        });

        Schema::create('permissions', function (Blueprint $table) {
            $table->Increments('id');
            $table->string('title_fa');
            $table->string('title_en');
            $table->timestamps();
        });

        Schema::create('role_user', function (Blueprint $table) {
            $table->integer('role_id');
            $table->integer('user_id');

            $table->foreign('role_id')
                ->references('id')
                ->on('roles')
                ->onUpdate('cascade')
                ->onDelete('cascade');
            $table->foreign('user_id')
                ->references('id')
                ->on('users')
                ->onUpdate('cascade')
                ->onDelete('cascade');
        });

        Schema::create('permission_role', function (Blueprint $table) {
            $table->integer('permission_id');
            $table->integer('role_id');

            $table->foreign('permission_id')
                ->references('id')
                ->on('permissions')
                ->onUpdate('cascade')
                ->onDelete('cascade');
            $table->foreign('role_id')
                ->references('id')
                ->on('roles')
                ->onUpdate('cascade')
                ->onDelete('cascade');
        });
    } 

我尝试对角色id和用户id使用unsign integer
id
,我尝试了:

 $table->primary(['role_id','user_id']);

但对我来说并不是这样的

您想将整数更改为无符号的biginteger,如下所示:


public function up() {

    Schema::create('roles', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title_fa');
        $table->string('title_en');
        $table->timestamps();
    });

    Schema::create('permissions', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title_fa');
        $table->string('title_en');
        $table->timestamps();
    });

    Schema::create('role_user', function (Blueprint $table) {
        $table->unsignedBigInteger('role_id');
        $table->unsignedBigInteger('user_id');

        $table->foreign('role_id')
            ->references('id')
            ->on('roles')
            ->onUpdate('cascade')
            ->onDelete('cascade');
        $table->foreign('user_id')
            ->references('id')
            ->on('users')
            ->onUpdate('cascade')
            ->onDelete('cascade');
    });

    Schema::create('permission_role', function (Blueprint $table) {
        $table->unsignedBigInteger('permission_id');
        $table->unsignedBigInteger('role_id');

        $table->foreign('permission_id')
            ->references('id')
            ->on('permissions')
            ->onUpdate('cascade')
            ->onDelete('cascade');
        $table->foreign('role_id')
            ->references('id')
            ->on('roles')
            ->onUpdate('cascade')
            ->onDelete('cascade');
    });
} 

要将整数更改为无符号biginteger,如下所示:


public function up() {

    Schema::create('roles', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title_fa');
        $table->string('title_en');
        $table->timestamps();
    });

    Schema::create('permissions', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title_fa');
        $table->string('title_en');
        $table->timestamps();
    });

    Schema::create('role_user', function (Blueprint $table) {
        $table->unsignedBigInteger('role_id');
        $table->unsignedBigInteger('user_id');

        $table->foreign('role_id')
            ->references('id')
            ->on('roles')
            ->onUpdate('cascade')
            ->onDelete('cascade');
        $table->foreign('user_id')
            ->references('id')
            ->on('users')
            ->onUpdate('cascade')
            ->onDelete('cascade');
    });

    Schema::create('permission_role', function (Blueprint $table) {
        $table->unsignedBigInteger('permission_id');
        $table->unsignedBigInteger('role_id');

        $table->foreign('permission_id')
            ->references('id')
            ->on('permissions')
            ->onUpdate('cascade')
            ->onDelete('cascade');
        $table->foreign('role_id')
            ->references('id')
            ->on('roles')
            ->onUpdate('cascade')
            ->onDelete('cascade');
    });
}