این خطا منظورش چیه و چجوری حلش کنم؟
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
@morteza14
سلام ، شما برای این جدول کلید خارجی تعریف کردید؟
چون ارور میگه که نمیتونه اون دیتای مورد نظرتون رو پاک کنه به دلیل داشتن کلید خارجی
@morteza14
خب ببینید بعد از انتخاب فیلدهای کلید اصلی و خارجی یه گزینه هس به صورت دراپ باکس مقدارو ست کنین روی cascadeگزینه on delete
سلام دوست عزیز
id های post و category باید یک شکل باشن. یعنی اگه id یکی bigInt است اون یکی هم باید به صورت bigInt باشد. ممکنه مشکلتون توی این مورد باشه.
@morteza14
من این کارو انجام دادم. 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()
@morteza14
اگر از لاراول استفاده میکنید نباید دستی انجام بدید
ابتدا رول بک کنید و این دستور رو برای ON DELETE بنویسید
این کد سمپل هست و شما مقادیر خودتون رو جای گزاری کنید
$table->unsignedBigInteger('attribute_id');
$table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade');
منم تعجبم از همینه
این کدهای منه:
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
<?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);
}
}
سلام moha جان
بله انجام دادم ولی داخل migration هم درست انجام داده بودم قبلا
@mohaligateway
شما دقیقا همنون تغییراتی که ایجاد کردید باید داخل migration ایجاد کنید. و تغییرات رو اعمال کنید. مثلا یک migration برای foreign_key ایجاد کنید جدای از کامنت و تغییرات رو اعمال کنید تا داخل جدول migration هم اپدیت بشه. فقط قبل از انجام تغییرات حتما نسخه پشتیبان بگیرید.
@morteza14
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟