Миграционные отношения Laravel - PullRequest
0 голосов
/ 02 июня 2019

У меня проблемы с миграцией ларавеллы.Я хочу установить связь между двумя таблицами.Например, у меня есть таблица users и table products, а в таблице products у меня есть столбец user_owner, поэтому я могу указать пользователя следующим образом:

Users table

$table->bigIncrements('id');

Product table

$table->integer('user_owner');
$table->foreign('user_owner')->references('id')->on('users');

Но каждый раз, когда я хочу перенести эту таблицу, у меня появляется ошибка вроде:

SQLSTATE[HY000]: General error: 1005 Can't create table `ecomet_html`.`#sql-3c38_b9` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `products` add constraint `products_store_id_foreign` foreign key (`store_id`) references `stores` (`id`))

Почему я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

попробуйте.

Обновите имя пользователя:

    $table->integer('user_owner');

До:

$table->unsignedBigInteger('user_owner');
0 голосов
/ 02 июня 2019
  1. Проверьте, находится ли таблица продуктов в алфавитном порядке перед таблицей пользователя (миграция .php файлов). Artisan принимает их по одному и, возможно, принимает продукты раньше пользователей, и тогда база данных не может обнаружить таблицу пользователей, потому что она еще не создана.
  2. Проверьте форматы ключей! Длина идентификаторов пользователей и продуктов различна. Попробуйте (таблица продуктов): $table->bigInteger('user_owner'); or $table->unsignedBigInteger('user_owner'); or $table->bigInteger('user_owner')->unsigned();

  3. Еще одно предложение: $table->foreign('user_owner')->references('id')->on('users')->onDelete('cascade');, для механизма обработки данных может потребоваться аргумент onDelete

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...