【问题标题】:how can i fix this error errno: 150 "Foreign key constraint is incorrectly formed"我该如何解决这个错误 errno: 150 “外键约束的格式不正确”
【发布时间】:2019-10-13 16:11:55
【问题描述】:

我想在 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');
        });
    } 

我尝试 unsign inteager 为角色 ID 和用户 id 并尝试它:

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

但它不适合我

【问题讨论】:

    标签: php mysql laravel acl laravel-6


    【解决方案1】:

    您想像这样将整数更改为无符号大整数:

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

    【讨论】:

      猜你喜欢
      • 2020-01-14
      • 2018-06-19
      • 2018-03-02
      • 2020-07-07
      • 1970-01-01
      • 2021-03-01
      • 2017-04-13
      • 2018-09-04
      • 2019-09-17
      相关资源
      最近更新 更多