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

#php #laravel

#php #laravel

Вопрос:

Я создал две таблицы, а во второй я установил внешний ключ. Когда я вызываю команду php artisan migrate , я получаю следующую ошибку:

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

Первое имя таблицы — участники, а второе — партнеры

 $table->integer('member_id')->unsigned();
$table->foreign('member_id')->on('members')->references('id')->onDelete('cascade')->onUpdate('cascade');
  

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

1. вам нужно опубликовать более подробную информацию, по крайней мере, 2 файла миграции

Ответ №1:

 $table->integer('member_id')->unsigned();
  

изменить как

 $table->bigInteger('member_id')->unsigned();
  

потому что laravel использует по умолчанию bigIncrement для столбцов идентификаторов в файлах миграции.

Ответ №2:

Прежде всего, начиная с Laravel 5.8, все идентификаторы bigintegers

Однако, поскольку они также не отображаются, вы можете сделать:

 $table->unsignedBigInteger('member_id');
  

Для второй строки вы можете захотеть изменить порядок:

 $table->foreign('member_id')->references('id')->on('members')->onDelete('cascade')->onUpdate('cascade');
  

Обратите внимание, что members таблица должна быть создана сначала, прежде чем вы сможете ссылаться на ее ключ.

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

1. Спасибо всем за вашу поддержку. С помощью $table->unsignedBigInteger(‘member_id’); работает.

Ответ №3:

Ваша таблица members должна быть создана до вашей текущей таблицы
или, возможно id , ваше поле memers имеет другой тип, чем ваша текущая таблица
пожалуйста, опубликуйте свои файлы миграции