我如何解决此错误错误号:150“外键约束格式不正确”

问题描述 投票:0回答:1

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

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

我尝试unsigninteager的角色ID和用户ID ..,然后尝试:$ table-> primary(['role_id','user_id']);

但是它不适合我

php mysql laravel acl laravel-6
1个回答
0
投票

您想像这样将整数更改为无符号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');
    });
} 
© www.soinside.com 2019 - 2024. All rights reserved.