Ограничение внешнего ключа неправильно сформировано при миграции Laravel-7

#laravel #foreign-keys #database-migration #laravel-relations

#laravel #внешние ключи #база данных-миграция #laravel-отношения

Вопрос:

Когда вы применяете внешний ключ с помощью laravel, он переносится с помощью этого типа ошибки

«Ограничение внешнего ключа неправильно сформировано»

Структура миграции по умолчанию

 User Table
---------

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });

Chat Table
---------

 Schema::create('chats', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id');
            $table->timestamps();

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


        });

  

Ответ №1:

Это происходит потому, что размер нашего столбца не должен быть точно таким же, посмотрите ниже.

 $table->id();
This will create a big integer
  

И

  $table->integer('user_id');
This will create a small integer that's why Our foreign key relations fails
  

Как исправить эту проблему

 $table->unsignedBigInteger('user_id');
  

или

 $table->foreignId('user_id')->constrained();
  

Добавьте unsignedBigInteger и ваша проблема будет решена.

Комментарии:

1. вы также можете использовать $table->foreignId('user_id')

2. @apokryfos вы правы, это из laravel-7. » $table-> foreignId(‘user_id’)-> constrainted(); »