پویا واقفی
3 سال پیش توسط پویا واقفی مطرح شد
2 پاسخ

Foreign key constraint is incorrectly formed در لاراول

سلام دوستان.
من دوره اموزشی راه اندازی وبسایت اموزشی فروشگاهی با لاراول رو شروع کردم و این مایگریشن رو برای جدول episodes پیاده سازی کردم (طبق ویدیو):

public function up()
{
    Schema::create('episodes', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('course_id')->unsigned();
        $table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade');
        $table->string('type', 10);
        $table->string('title');
        $table->string('slug');
        $table->text('description');
        $table->text('body');
        $table->string('videoUrl');
        $table->string('tags');
        $table->string('time', 15)->default('00:00:00');
        $table->integer('number');
        $table->integer('viewCount')->default(0);
        $table->integer('commentCount')->default(0);
        $table->integer('downloadCount')->default(0);
        $table->timestamps();
    });
}

اما ارور زیر رو برگرداند:

SQLSTATE[HY000]: General error: 1005 Can't create table elearning.episodes (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table episodes add constraint episodes_course_id_foreign foreign key (course_id) references courses (id) on delete cascade)
[PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table elearning.episodes (errno: 150 "Foreign key constraint is incorrectly formed")

توی استک اورفلو پرسیدم و گفتن از bigInteger به جای integer برای course_id استفاده کنم که البته بازهم ارور داد!

ضمن اینکه ورژن لاراول من 5.4 هست.

ممنون میشم در این زمینه کمکم کنید...


ثبت پرسش جدید
میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 3 سال پیش مطرح شد
0

سلام خسته نباشید
باید درست باشه طبق مستندات https://laravel.com/docs/5.4/migrations#foreign-key-constraints
حالا به نظرم بیا چک کن ببین واقعا لاراولت نسخه 5.4 هست یا نه


mobin
@mobin.esaghi@gmail.com 2 سال پیش مطرح شد
0

من هم همین مشکل را داشتم بعد کلی تلاش فهمیدم متقیر های تیبل های دیتابیس یکی نیستند

$table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade');

در اینجا id در تیبل courses باید متقیرش با course_id یکی باشد


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام