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');
});
你好我使用这个迁移并看到这个错误
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');
});