sesc360
sesc360

Reputation: 3255

mysql foreign key error in Laravel 5.1

I have created two migrations:

Migration 1

    Schema::create('responders', function (Blueprint $table) {
        $table->increments('id');
        $table->string('user_id');
        $table->double('latitude', 10, 6);
        $table->double('longitude', 10, 6);
        $table->timestamps();
    });

Migration 2

    Schema::create('devices', function (Blueprint $table) {
        $table->increments('id');
        $table->string('user_id');
        $table->string('device_id');
        $table->string('device_token');
        $table->timestamps();

        $table->foreign('user_id')
            ->references('user_id')
            ->on('responders')
            ->onDelete('cascade');

    });

When I start migration the error message is being thrown:

[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table devices add constraint devices_user_id_foreign foreign key (user_id) references responders (user_id) on delete cascade)
[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

I specifically took care that the data types are the same. In this case both are of type string. Why does the foreign key can't be established?

Upvotes: 3

Views: 250

Answers (1)

ARIF MAHMUD RANA
ARIF MAHMUD RANA

Reputation: 5166

A foreign key is a column (or columns) that references a column (most often the primary key) of another table. The purpose of the foreign key is to ensure referential integrity of the data. In other words, only values that are supposed to appear in the database are permitted.

Here user_id in responders table isn't a key that's why it's showing this error.

Upvotes: 1

Related Questions