Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysql foreign key error in Laravel 5.1

Tags:

php

mysql

laravel

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?

like image 674
sesc360 Avatar asked Nov 19 '25 18:11

sesc360


1 Answers

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.

like image 80
ARIF MAHMUD RANA Avatar answered Nov 22 '25 09:11

ARIF MAHMUD RANA



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!