رایموند
3 سال پیش توسط رایموند مطرح شد
10 پاسخ

خطای SQLSTATE 23000 Integrity constraint violation

درود دوستان...
یه بخش دسته بندی کد نویسی کردم که همه چیز اوکیه و دسته ها ایجاد می کنه, بعد حذف و ویرایش میشه...
یه مدتی خوب کار می کنه و بعد از آن وقتی بخوام دسته ایجاد کنم خطای زیر میده:

Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'developer web 3' for key 'categories_slug_unique' (SQL: insert into `categories` (`name`, `slug`, `category_id`, `updated_at`, `created_at`) values (Orchid navs, developer web 3, 7, 2021-09-21 16:45:12, 2021-09-21 16:45:12))

ثبت پرسش جدید
mamat
@atrakunin 3 سال پیش آپدیت شد
0

سلام مجدد
هر بار که ;()Category::create رو صدا میزنید یک ریکورد رو توی دیتابیستون ذخیره می کنید
الان توی کدی که فرستادین یکبار ریکویست ولیدیت شده رو ذخیره میکنید و یکبار هم مقادیر نام و اسلاگ و کتگوری آی دی ریکویست رو
بنابراین دو بار دارین اطلاعات رو وارد میکنید
فک کنم منظورتون این بوده که اول اطلاعات ولیدیت بشن و بعد فقط اطلاعات خاصی از ریکویست ولیدت شدتون وارد دیتابیس بشه
;()Category::create اولی اضافیه


mamat
@atrakunin 3 سال پیش مطرح شد
0

یکی از ستونای جدولتون که احتمال میدم اسلاگ باشه یونیک هستش و شما دارین مقدار تکراری واردش میکنین


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 3 سال پیش آپدیت شد
1

@atrakunin
@mohammad.hekmaty
توضیح تصویر رو وارد کنید

یه نگاهی به عکس بنداز اصلا اسلاگ تکراری وارد نشده ...


mamat
@atrakunin 3 سال پیش آپدیت شد
0

من اصرار دارم که ارور شما داره همینو میگه و یه اسلاگ ممکنه تکراری باشه
جهت اطمینان یه اسلاگ متفاوت وارد کنید و همچنین مستقیم دیتابیستونو چک کنید


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 3 سال پیش مطرح شد
0

@atrakunin

دسته ثبت می کنه و بخواد منتقل بشه صفحه اصلی خطای اسلاگ متفاوت وارد می کنم رو میده...

 SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'BBBBBBB' for key 'categories_slug_unique' (SQL: insert into `categories` (`name`, `slug`, `category_id`, `updated_at`, `created_at`) values (تست 2, BBBBBBB, 7, 2021-09-21 17:43:17, 2021-09-21 17:43:17)) 

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


mamat
@atrakunin 3 سال پیش مطرح شد
0

تو این که داری تکراری وارد میکنی شکی نداشته باش
ببین احتمال زیاد داری دوبار ریکورد کرییت میکنی حالا شاید تو این کنترلت یا کنترل های دیگت
من باشم تو این شرایط همه جاهایی که داده به دیتابیسم وارد میکنم رو چک میکنم که یه وقت یه کرییت دیگه نباشه


mamat
@atrakunin 3 سال پیش مطرح شد
0

کد کنترلر صفحه اصلی که بعد از وارد کردن اطلاعات بهش ریدایرکت میشی رو بفرست


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 3 سال پیش مطرح شد
0

@atrakunin

public function store(CategoryCreateRequest $request)
    {
        Category::create(
            $request->validated()
        );

        Category::create(
            $request->only(['name', 'slug', 'category_id'])
        );

        session()->flash('status', 'دسته بندی مد نظر به درستی ایجاد شد!');

        return back();
 }

رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 3 سال پیش مطرح شد
0

@atrakunin

دیتابیس مربوط به جدول categoryies پاک کردم و دوباره دسته ایجاد کردم همون خطا رو میده:

Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Test 1' for key 'categories_slug_unique' (SQL: insert into `categories` (`name`, `slug`, `category_id`, `updated_at`, `created_at`) values (تست ۱, Test 1, ?, 2021-09-21 19:16:22, 2021-09-21 19:16:22)) 

رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 3 سال پیش مطرح شد
0

@atrakunin
اینم کد جدولشه:

Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('slug')->unique();

            $table->unsignedBigInteger('category_id')->nullable();

            $table->foreign('category_id')
                ->references('id')
                ->on('categories')
                ->onUpdate('CASCADE')
                ->onDelete('CASCADE');

            $table->timestamps();
 });

mamat
@atrakunin 3 سال پیش آپدیت شد
0

سلام مجدد
هر بار که ;()Category::create رو صدا میزنید یک ریکورد رو توی دیتابیستون ذخیره می کنید
الان توی کدی که فرستادین یکبار ریکویست ولیدیت شده رو ذخیره میکنید و یکبار هم مقادیر نام و اسلاگ و کتگوری آی دی ریکویست رو
بنابراین دو بار دارین اطلاعات رو وارد میکنید
فک کنم منظورتون این بوده که اول اطلاعات ولیدیت بشن و بعد فقط اطلاعات خاصی از ریکویست ولیدت شدتون وارد دیتابیس بشه
;()Category::create اولی اضافیه


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

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