غیر فعال کردن ONLY FULL GROUP د ر MySQL
بصورت دائمی
گاهی اوقات بخاطر تداخلات ورژن دیتابیس لوکال و سرور،لازم میشه که بعضی تنظیمات دیتابیس روی سرور رو تغییر داد.
یکی از مشکلاتی که من باهاش برخورد کردم، مشکل استفاده از GROUP BY داخل کوئری هام بود.
دقیق دلیلش رو نمیدونم ولی راه حلی که پیدا کردم این بود که باید از بخش VARIABLES داخل phpmyadmin از داخل sql_mode مقدارONLY_FULL_GROUP رو حذف کنیم.
این راه حل یه مشکلی داشت، هر موقع سرویس دیتابیس روی سرور به هر دلیلی ریستارت میشد، تنظیمات هم ریست میشدن و ONLY_FULL_GROUP دوباره بر میگشت.
برای حل این مشکل زیاد سرچ زدم و به نتیجه رسیدم.
چند مرحله نیازه که انجام شه و اونا رو اینجا مینویسم تا هم برای من یه یادداشتی باشه و هم شما بتونید استفاده کنید:
شناسایی فایل my.cnf:
sudo find / -name my.cnf
تو این مرحله فایل کانفیگ mysql رو از داخل سرور سرچ زده و پیدا میکنیم.
اگه چندین نتیجه به شما نشون داد، اونی که تو مسیرش mysql داره رو انتخاب کنید.
برای مثال :
/etc/mysql/my.cnf
این مسیر رو در نظر داشته باشید.
وارد این مسیر میشیم:
cd /etc/mysql/
سپس با کد زیر فایل رو ویرایش میکنیم:
sudo nano my.cnf
داخل ادیتور خط زیر رو اگه [mysqld] وجود داشت،زیرش پیست کنید و یا اگر نبود آخر فایل دستی [mysqld] بنویسید و در خط بعدی متن زیر رو پیست کنید:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
بعد با زدن Ctrl + X و سپس y و Enter فایل رو ذخیره میکنیم.
الان باید به فایل دسترسی 644 بدیم:
sudo chmod 644 my.cnf
الان باید سرویس mysql رو ریستارت کنیم:
sudo mysql service restart
اگه چیزی پرینت نکرد، یعنی اوکیه و کار میکنه.
میتونید از بخش VARIABLES موجود در phpmyadmin بررسی کنید که اعمال شد یا نه.
sudo systemctl restart mysql
دسته بندی