gpt4 book ai didi

mysql - Laravel 迁移 - 外键 SQL 错误

转载 作者:行者123 更新时间:2023-11-29 10:18:10 25 4
gpt4 key购买 nike

我有一个hazard_categories表,其中包含一个hazard_category_id

在我的 Hazard_videos 表中,我想引用它。

我的危险类别迁移如下:

Schema::create('hazard_categories', function (Blueprint $table) {
$table->increments('hazard_category_id');
$table->string('hazard_category_name');
$table->string('hazard_category_thumb');
$table->integer('hazard_category_total');
$table->timestamps();
$table->softDeletes();
});

我的迁移编写如下:

    Schema::table('hazard_videos', function (Blueprint $table)
{
$table->integer('video_category')->unsigned();
$table->foreign('video_category')->references('hazard_category_id')->on('hazard_categories');
});

但是当我运行这个时,我收到 MySQL 错误:

[Illuminate\Database\QueryException]
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`icourse`.`#sql-da4_40df`, CONSTRAINT `hazard_videos_video_category_foreign` FOREIGN KEY (`video_category`) REFERENCES `hazard_categorie
s` (`hazard_category_id`)) (SQL: alter table `hazard_videos` add constraint `hazard_videos_video_category_foreign` foreign key (`video_category`) references `hazard_categories` (`hazard_category_id`))

为什么我会得到这个?我已经镜像了 Laravel 文档,但遇到了 MySQL 错误。

是否有更好的方法来编写引用完整性约束?

最佳答案

如果表中已有数据,则 video_category 的值必须是有效的外键:

Schema::table('hazard_videos', function (Blueprint $table) {
$table->integer('video_category')->unsigned();
});

HazardVideo::query()->update(['video_category' => 1]);

Schema::table('hazard_videos', function (Blueprint $table) {
$table->foreign('video_category')->references('hazard_category_id')
->on('hazard_categories');
});

或者您将列设置为可为空

关于mysql - Laravel 迁移 - 外键 SQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49795629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com