غیر فعال کردن ONLY_FULL_GROUP

بصورت دائمی

گاهی اوقات بخاطر تداخلات ورژن دیتابیس لوکال و سرور،لازم میشه که بعضی تنظیمات دیتابیس روی سرور رو تغییر داد.

یکی از مشکلاتی که من باهاش برخورد کردم، مشکل استفاده از 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

تگ ها : sql tip database server config


نویسنده : سینا | 1399-11-15

نظرات

برای ارسال نظر باید حساب کاربری داشته باشی!

نظری ثبت نشده است.