php - SQLSTATE[HY000]:一般错误:1215 无法在 laravel 8 中添加外键约束
问题描述
嗨,我正在尝试创建类别,然后创建子类别,因此如果删除类别,子类别也将在这里被删除我到目前为止所做的创建了一个名为类别的模型还创建了一个子类别模型
运行该类别的迁移
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('image');
$table->string('slug');
$table->timestamps();
});
}
在我的子类别迁移中,我定义了
public function up()
{
Schema::create('subcategories', function (Blueprint $table) {
$table->increments('id');
$table->unsignedBigInteger('category_id');
$table->string('name');
$table->string('slug');
$table->timestamps();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
});
}
当我尝试迁移时,我遇到了错误,指出 Illuminate\Database\QueryException
SQLSTATE [HY000]:一般错误:1215 无法添加外键约束(SQL:删除级联时更改表subcategories
添加约束subcategories_category_id_foreign
外键(category_id
)引用categories
( ))id
我的 laravel 版本是 8.40 nd sqlversion 是 5.7.24
确实改变了两个表的时间戳仍然没有工作
2021_06_09_000000_create_categories_table.php 2021_06_10_055026_create_subcategories_table.php
即使我尝试过
$table->foreignId('category_id')->constrained('categories');
解决方案
只需使用
$table->foreignId('category_id)
代替
$table->unsignedBigInteger('category_id')
$table->foreign('category_id')->references('id')
推荐阅读
- image-processing - 如何在 FIJI(ImageJ)中从另一个堆栈中减去一个堆栈?
- c++ - 我可以使用类的对象而不是指向对象的指针来实现链表吗?
- azure - 将从 azure 表单识别器检索到的 json 转换为可读的 pdf
- javascript - 使用对象数据数组 es6 过滤数据
- javascript - 在 Bootstrap 5 轮播中分别为字幕和幻灯片制作动画?
- opayo - Opayo 3ds2 - sagepay PI 集成 rsa3dsauth.co.uk 无法返回三个DSSessionData
- python - Python OPC UA 将变量传递给 uamethod
- javascript - 创建 csv 文件时编码符号
- java - 如何知道用户是从特定位置经过还是错过了该位置
- javascript - 如果有类活动 jQuery,如何删除 DataTable 中的完整行