SQLSTATE[HY000]: General error: 1005 Can't create table `laravel_work_faranesh`.`learnings`

SQLSTATE[HY000]: General error: 1005 Can't create table `laravel_work_faranesh`.`learnings`

你好我使用这个迁移并看到这个错误

Schema::create('learnings', function (Blueprint $table) {
            $table->id();
            $table->bigInteger('course_id')->unsigned();
            $table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade');
            $table->bigInteger('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();
        });

错误:

 SQLSTATE[HY000]: General error: 1005 Can't create table `laravel_work_faranesh`.`learnings` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter tab
le `learnings` add constraint `learnings_course_id_foreign` foreign key (`course_id`) references `courses` (`id`) on delete cascade)

和课程迁移

Schema::create('courses', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade');   
    });

尝试像这样创建迁移:

先创建课程,然后再创建学习。

Schema::create('courses', function (Blueprint $table) {
            $table->bigIncrements('id')->unsigned();
            $table->bigInteger('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade');   
        });


Schema::create('learnings', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('course_id')->unsigned();
            $table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade');
            $table->bigInteger('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();
        });

因为您对一列使用了两次无符号。

您只能在已经存在的表中设置外键。试试这个:

    Schema::create('courses', function (Blueprint $table) {
        $table->id();
        $table->unsignedBigInteger('user_id')->unsigned();
    });
    Schema::table('courses', function (Blueprint $table) {
        $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade');
    });

并且:

        Schema::create('learnings', function (Blueprint $table) {
            $table->id();
            $table->bigInteger('course_id')->unsigned();
            $table->bigInteger('user_id')->unsigned();
            $table->timestamps();
        });
        Schema::table('learnings', function (Blueprint $table) {
            $table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        });