Миграция: два внешних ключа, ссылающихся на одну и ту же таблицу, приводят к ошибке

#laravel #migration #laravel-5.7

#laravel #миграция #laravel-5.7

Вопрос:

Я попытался создать блог, но меня заблокировали из-за ошибки при переносе одной таблицы.

Я попытался изменить порядок создания внешнего ключа,

встроить два внешних ключа только в один с массивом,

 $table->foreign(['commentary_id', 'post_id'])->references(['id', 'post_id'])->on('commentaries');
  

Комментарии к миграции

 $table->integer('post_id')->unsigned();
$table->integer('id')->unsigned();
$table->string('content');
$table->integer('user_id')->unsigned();
$table->timestamps();

$table->primary(['post_id', 'id']);
$table->foreign('post_id')->references('id')->on('posts');
$table->foreign('user_id')->references('id')->on('users');
  

Миграция ответов

 $table->integer('post_id')->unsigned();
$table->integer('commentary_id')->unsigned();
$table->integer('id')->unsigned();
$table->string('content');
$table->integer('user_id')->unsigned();
$table->timestamps();

$table->primary(['post_id', 'commentary_id', 'id']);
$table->foreign(['commentary_id', 'post_id'])->references(['id', 'post_id'])->on('commentaries');
$table->foreign('user_id')->references('id')->on('users');
  

И ошибка, которую я получил :

 General error: 1005 Can't create table `blog-lurius`.`responses` 
(errno: 150 "Foreign key constraint is incorrectly formed") 
(SQL: alter table `responses` add constraint `responses_commentary_id_post_id_foreign` foreign key (`commentary_id`, `post_id`) references `commentaries` (`id`, `post_id`))

  

Я ожидаю, что в моей миграции не будет фатальной ошибки. Где оба моих внешних ключа эффективны.

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

1. $table->foreign(‘user_id’)->references(‘id’)-> on (‘users’)-> onUpdate (‘cascade’)-> OnDelete (‘cascade’); Попробуйте добавить их позже.

2. Проблема не в user_id … и, как я только что сказал, я «нахожу» проблему, но не могу объяснить, почему она у меня возникла…

3. Последовательность параметра важна, как указано в документах. laravel.com/docs/5.8/migrations#foreign-key-constraints