Morteza14
4 سال پیش توسط Morteza14 مطرح شد
16 پاسخ

خطای Cant DROP FOREIGN KEY

این خطا منظورش چیه و چجوری حلش کنم؟
SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP FOREIGN KEY posts_category_id_foreign; check that it exists (SQL: alter table posts drop foreign key posts_category_id_foreign)

توضیح تصویر رو وارد کنید

@mhyeganeh
@mohaligateway
@milad
@hesammousavi
@ali.bayat
@eniack


ثبت پرسش جدید
فرشید مرادی
تخصص : noob
@eniack 4 سال پیش مطرح شد
0

@morteza14
سلام ، شما برای این جدول کلید خارجی تعریف کردید؟
چون ارور میگه که نمیتونه اون دیتای مورد نظرتون رو پاک کنه به دلیل داشتن کلید خارجی


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 4 سال پیش مطرح شد
-1

سلام فرشید جان بله

توضیح تصویر رو وارد کنید

@eniack


فرشید مرادی
تخصص : noob
@eniack 4 سال پیش آپدیت شد
0

@morteza14
خب ببینید بعد از انتخاب فیلدهای کلید اصلی و خارجی یه گزینه هس به صورت دراپ باکس مقدارو ست کنین روی cascadeگزینه on delete


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

سلام دوست عزیز
id های post و category باید یک شکل باشن. یعنی اگه id یکی bigInt است اون یکی هم باید به صورت bigInt باشد. ممکنه مشکلتون توی این مورد باشه.
@morteza14


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 4 سال پیش مطرح شد
-1

سلام moha جان
چک کردم این مورد درسته
@mohaligateway


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 4 سال پیش مطرح شد
-1

فرشید جان میشه دقیق بگی از کجا؟
من تو phpmyadmin پیدا نکردم
@eniack


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

توی قسمت structure پائین تب دکمه ای به نام Relation view وجود داره.
@morteza14


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 4 سال پیش آپدیت شد
-1

توضیح تصویر رو وارد کنید

من این کارو انجام دادم. save کردم
دوباره migrate کردم ولی هنوز خطای قبلیو میده
متن کل خطا اینه :

C:\xampp\htdocs\zeytoon>php artisan migrate
PHP Warning: Module 'soap' already loaded in Unknown on line ۰

Warning: Module 'soap' already loaded in Unknown on line ۰
Migrating: ۲۰۲۱_۰۳_۱۳_۱۶۳۱۱۲_update_forienkey_posts_table

Illuminate\Database\QueryException : SQLSTATE[۴۲۰۰۰]: Syntax error or access violation: ۱۰۹۱ Can't DROP FOREIGN KEY posts_category_id_foreign; check that it exists (SQL: alter table posts drop foreign key posts_category_id_foreign)

at C:\xampp\htdocs\zeytoon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:۶۶۴
۶۶۰| // If an exception occurs when attempting to run a query, we'll format the error
۶۶۱| // message to include the bindings with SQL, which will make this exception a
۶۶۲| // lot more helpful to the developer instead of just the database's errors.
۶۶۳| catch (Exception $e) {

۶۶۴| throw new QueryException(
۶۶۵| $query, $this->prepareBindings($bindings), $e
۶۶۶| );
۶۶۷| }
۶۶۸|

Exception trace:

۱ PDOException::("SQLSTATE[۴۲۰۰۰]: Syntax error or access violation: ۱۰۹۱ Can't DROP FOREIGN KEY posts_category_id_foreign; check that it exists")
C:\xampp\htdocs\zeytoon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:۴۵۸

۲ PDOStatement::execute()
C:\xampp\htdocs\zeytoon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:۴۵۸

Please use the argument -v to see more details.

Whoops\Exception\ErrorException : Module 'soap' already loaded

at Unknown:۰
۱|

Exception trace:

۱ Whoops\Run::handleError("Module 'soap' already loaded", "Unknown")
C:\xampp\htdocs\zeytoon\vendor\filp\whoops\src\Whoops\Run.php:۴۵۴

۲ Whoops\Run::handleShutdown()

@mohaligateway
@eniack


فرشید مرادی
تخصص : noob
@eniack 4 سال پیش آپدیت شد
0

@morteza14
داخل این بخش
structure ->Relation view
گزینه
ON DELETE قرار بدید روی CASCADE]
گزینه     
ON DELETE قرار بدید روی CASCADE


فرشید مرادی
تخصص : noob
@eniack 4 سال پیش مطرح شد
0

@morteza14
اگر از لاراول استفاده میکنید نباید دستی انجام بدید
ابتدا رول بک کنید و این دستور رو برای ON DELETE بنویسید
این کد سمپل هست و شما مقادیر خودتون رو جای گزاری کنید

 $table->unsignedBigInteger('attribute_id');
            $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade');

Morteza14
تخصص : برنامه نویس لاراول
@morteza14 4 سال پیش مطرح شد
0

منم تعجبم از همینه
این کدهای منه:

  public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('post_id');
            $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
            $table->unsignedInteger('parent_id')->nullable();
            $table->text('description');
            $table->tinyInteger('status');
            $table->timestamps();
        });
    }

@mohaligateway
@milad
@hesammousavi
@ali.bayat
@eniack
@mhyeganeh


فرشید مرادی
تخصص : noob
@eniack 4 سال پیش مطرح شد
0

@morteza14
کدی که داخل مدل نوشتید هم قرار بدید لطفا


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 4 سال پیش مطرح شد
0
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
  public function post()
  {
    return $this->belongsTo(Post::class);
  }
  public function replies()
  {
    return $this->hasMany(Comment::class, 'parent_id');
  }
}
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
    public function photo()
    {
        return $this->belongsTo(Photo::class);
    }
    public function PostCategory()
    {
        return $this->belongsTo(PostCategory::class);
    }
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}

@eniack


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

سلام وقت بخیر
شما تغییرات رو داخل phpmyadmin به صورت دستی انجام داده اید ؟
@morteza14


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 4 سال پیش مطرح شد
0

سلام moha جان
بله انجام دادم ولی داخل migration هم درست انجام داده بودم قبلا
@mohaligateway


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

شما دقیقا همنون تغییراتی که ایجاد کردید باید داخل migration ایجاد کنید. و تغییرات رو اعمال کنید. مثلا یک migration برای foreign_key ایجاد کنید جدای از کامنت و تغییرات رو اعمال کنید تا داخل جدول migration هم اپدیت بشه. فقط قبل از انجام تغییرات حتما نسخه پشتیبان بگیرید.
@morteza14


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

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