Я пытаюсь применить внешний ключ к столбцу user_id, связанному с идентификатором таблицы users
Я пытался сделать это путем миграции и в рабочей среде, и эта ошибка продолжает появляться:
Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: сбой ограничения внешнего ключа
это mysql:
ALTER TABLE `dh_booky`.`books`
ADD CONSTRAINT `books_user_id_foreign`
FOREIGN KEY (`user_id`)
REFERENCES `dh_booky`.`users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
1-йкниги по миграции:
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('title_id')->unsigned();
$table->foreign('title_id')->references('id')->on('titles');
$table->bigInteger('author_id')->unsigned();
$table->foreign('author_id')->references('id')->on('authors');
$table->string('image')->nullable();
});
}
Обновление книг по миграции:
class UpdateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->bigInteger('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
//php artisan make:migration update_votes_table
});
Миграция пользователей:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
});
}