为什么不能使用约束外键进行迁移

问题描述 投票:1回答:2

为了做作业,我必须在laravel 7中做一个待办事项清单,我要做数据库,但是当我尝试为表任务创建外键时

enter image description here和一个表类别enter image description here程序失败,出现以下公式:“ SQLSTATE [HY000]:常规错误:1824无法打开引用表'类别'(SQL:更改表tasks添加约束tasks_category_id_foreign外键(categ ory_id)引用categories ([id)在删除级联上)“

我已经做了很多次,但是我不明白为什么有人可以解释为什么我不工作正确的方法

laravel database-migration laravel-7
2个回答
0
投票

迁移尝试在tasks之前创建categories表,但在尝试创建FK时categories表仍然不存在。

交换更改文件名的迁移顺序。每个位于database/migrations的迁移文件在名称之前都有一个日期时间。对其进行更改,以使任务迁移的日期大于类别一。


0
投票

Gus Costa会是正确的,你应该按照他说的做,但是我想补充一点,外键应为unsigned

这里您会找到一些不错的答案"General error: 1005 Can't create table" Using Laravel Schema Build and Foreign Keys

    // CREATING TABLE
    Schema::create('table_name', function (Blueprint $table) {
    $table->engine = 'InnoDB';
        $table->integer('field_id')->unsigned; //for field that contains foreign key constraint
    });

    // FOREIGN KEY CONSTRAINT
    Schema::table('stock', function ($table) {
        $table->foreign('field_id')->references('id')->on('some_table')->onDelete('cascade')->onUpdate('cascade');
    });
© www.soinside.com 2019 - 2024. All rights reserved.