Проблема с добавлением внешнего ключа к той же таблице в Laravel - Ошибка: «Невозможно добавить ограничение внешнего ключа» - PullRequest
0 голосов
/ 11 июля 2019

У меня есть таблица "пользователи".Некоторые пользователи связаны с другими пользователями через поле "consultant_id".

Когда я создаю свою базу данных с php artisan migrate, я получаю сообщение об ошибке PDOException::("SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint")

Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('first_name', 255);
            $table->string('last_name', 255);
            $table->string('email', 255)->unique();
            $table->string('password');
            $table->integer('consultant_id')->unsigned()->nullable()->index();
            $table->integer('profile_id')->unsigned()->nullable();
            $table->rememberToken();
            $table->timestamps();
        });
Schema::table('users', function(Blueprint $table) {
            $table->foreign('consultant_id')->references('id')->on('users')
                        ->onDelete('set null')
                        ->onUpdate('cascade');
        });

Canты поможешь мне ?

Большое спасибо!

Ответы [ 4 ]

0 голосов
/ 11 июля 2019

Попробуйте поместить этот код в метод down

Schema::dropForeign(['consultant_id']);

0 голосов
/ 11 июля 2019

Вы должны попробовать это:

Изменить следующую строку

$table->integer('consultant_id')->unsigned()->nullable()->index();

TO

$table->bigInteger('consultant_id')->unsigned();
0 голосов
/ 11 июля 2019

Попробуйте это

 Schema::disableForeignKeyConstraints();

 Schema::table('users', function(Blueprint $table) {
        $table->foreign('consultant_id')->references('id')->on('users')
                    ->onDelete('set null')
                    ->onUpdate('cascade');
 });

Schema::enableForeignKeyConstraints();
0 голосов
/ 11 июля 2019

В вашей пользовательской таблице primary key - big integer, поле внешнего ключа, которое вы пытаетесь использовать, - обычное integer.

Попробуйте:

$table->bigInteger('consultant_id')->unsigned()->nullable()->index();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...