مشکل sql_mode=only_full_group_by در لاراول (laravel)

مشکل sql_mode=only_full_group_by در لاراول (laravel)

زمان مطالعه

5 دقیقه

تعداد بازدید

138

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


اشتراک گذاری این مطلب
بهزاد میرزازاده
در مورد نویسنده : همیشه سخت تلاش کردم و به موفقیت های خیلی زیادی رسیدم اما دلیل نشد که متوقف بشم من برای هر روز برنامه دارم و به امید موفقیت های بزرگتر قدم بر میدارم همیشه سخت ترین مسئله ها، ساده ترین راه حل رو دارند پس بهانه جویی نباید روش کار ما برنامه نویسان باشه!!! ما می توانیم آینده را تعیین کنیم

مشکل sql_mode=only_full_group_by در لاراول (laravel)

مشکل sql_mode=only_full_group_by در لاراول (laravel)

زمان مطالعه

5 دقیقه

تعداد بازدید

138

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


اشتراک گذاری این مطلب

خطای sql_mode=only_full_group_by

گاهی اوقات وقتی چند جدول رو باهم جوین میکنیم و میخایم عملیات groupBy رو روی کوئری خودمون در لاراول داشته باشیم برای حذف تکراری ها با خطای ذیل مواجه میشیم

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'orien.products.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select `products`.*, `product_addresses`.*, `product_addresses`.`section`, `product_addresses`.`region`, `product_units_plans`.`type_vahed` from `products` inner join `product_addresses` on `product_addresses`.`product_id` = `products`.`id` inner join `product_units_plans` on `product_units_plans`.`product_id` = `products`.`id` where `products`.`status` <> 0 and `products`.`id` in (2, 2, 1) and `products`.`deleted_at` is null group by `products`.`title` order by `products`.`id` desc limit 12 offset 0)

این خطا بخاطر این مسئله اتفاق افتاده که مقدار strict برابر true قرار داره در تنظیمات دیتابیس پس برای حل این مشکل اول این مقدار رو برابر با false قرار میدیم

'strict' => false

in your config/database.php file. In array connections => mysql =>

 

آموزش پروژه محور لاراول 

strict در mysql چیست؟

Strict Mode وظیفه کنترل اعتبار داده های وارد شده در دیتابیس را دارد یعنی وقتی غیرفعال باشید شما میتونید داده های غیرمعتبر هم در فیلدهاتون قرار بدید. در ذیل نحوه حذف ONLY_FULL_GROUP_BY رو از دیتابیس mysql تشریح کردیم که باید برای استفاده از groupBy این قسمت هم حذف شود.

حذف ONLY_FULL_GROUP_BY از دیتابیس mysql

  • phpmyadmin رو از طریق مرورگر بازکنید و بخش localhost رو انتخاب کنید
  • در منوی بالایی وارد بخش Variables شوید و سپس sql mode رو سرچ کنید تا بتونید پیداش کنید
  • روز گزینه edit کلیک کنید و گزینه  ONLY_FULL_GROUP_BY رو حذف کنید

حذف ONLY_FULL_GROUP_BY از دیتابیس mysql

بهزاد میرزازاده
در مورد نویسنده : همیشه سخت تلاش کردم و به موفقیت های خیلی زیادی رسیدم اما دلیل نشد که متوقف بشم من برای هر روز برنامه دارم و به امید موفقیت های بزرگتر قدم بر میدارم همیشه سخت ترین مسئله ها، ساده ترین راه حل رو دارند پس بهانه جویی نباید روش کار ما برنامه نویسان باشه!!! ما می توانیم آینده را تعیین کنیم


پرسش و پاسخ
0
دوره پیشنهادی
دوره پیشنهادی