Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is creating Foreign Key in Laravel 5.8 failing?

The migration script below was running smoothly in an older version of Laravel but I added it to my fresh Laravel 5.8 and ran the script. I'm getting Error: foreign key was not formed correctly

Evaluation Migration:

public function up() { 
    Schema::create('evaluation', function (Blueprint $table) { 
        $table->increments('id'); 
        $table->integer('user_id')->unsigned()->index(); 
        $table->timestamps();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    });
}

Users Migration:

public function up() { 
    Schema::create('users', function (Blueprint $table) { 
        $table->bigIncrements('id'); 
        $table->timestamps();
    });
}
like image 960
Iftikhar uddin Avatar asked Mar 04 '19 20:03

Iftikhar uddin


1 Answers

As we discussed in the comments above, a foreign key column must be the same data type as the primary key it references.

You declared your user.id primary key as $table->bigIncrements('id') which becomes BIGINT UNSIGNED AUTO_INCREMENT in MySQL syntax.

You must declare the foreign key as $table->unsignedBigInteger('user_id') which will become BIGINT UNSIGNED in MySQL, making it compatible with being a foreign key to the user.id column.

like image 76
Bill Karwin Avatar answered Nov 10 '22 16:11

Bill Karwin