#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 имеет другой тип, чем ваша текущая таблица
пожалуйста, опубликуйте свои файлы миграции