У меня есть два следующих файла миграции:
Schema::create('words', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('book_id')->unsigned()->nullable();
$table->foreign('book_id')->references('id')->on('books')->onDelete('cascade');
$table->string('title');
$table->longText('definition', 2056);
$table->timestamps();
});
и
Schema::create('books', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('word_id')->unsigned()->nullable();
$table->foreign('word_id')->references('book_id')->on('words');
$table->string('title');
$table->string('author')->nullable();
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->integer('no_pages')->nullable();
$table->integer('current_page')->nullable();
$table->integer('status')->nullable();
$table->timestamps();
});
Когда я запускаю команду migrate, возникает следующая ошибка:
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1005 Ca
n't create table `words`.`#sql-16bc_76` (errno: 150 "Foreign key constraint is i
ncorrectly formed") (SQL: alter table `books` add constraint `books_word_id_fore
ign` foreign key (`word_id`) references `words` (`book_id`))
Почему это происходит? Я добавил word_id
в таблицу книг, чтобы я мог сосчитать слова, добавленные для этой книги.