حالت Strict mode، نحوه برخورد MySQL با مقادیر نامعتبر یا از دست رفته را در هنگام اجرای کوئری‌های تغییر داده‌ها مانند INSERT یا UPDATE کنترل می‌کند. به‌عنوان‌مثال، حالت Strict mode، درصورت وجود عملیات تقسیم بر صفر خطایی ایجاد می‌کند. همچنین تاریخ "0000-00-00" را مجاز نمی‌داند و خطایی ایجاد می‌نماید.

این آموزش، به شما در غیرفعال‌سازی حالت strict SQL در سرور MySQL 5.7 یا نسخه‌های بعدی کمک خواهد کرد.

 

 

این مطلب نیز ممکن است برای شما مفید باشد: نکات مفید برای رفع خطاهای رایج در MySQL

 

غیرفعال‌سازی حالت strict SQL

شما می‌توانید با ویرایش فایل mysqld.cnf روی سرور خود، حالت strict SQL را غیرفعال نمایید. اما در اینجا، یک فایل پیکربندی جداگانه برای این منظور در سرور MySQL ایجاد می‌کنیم.

$ sudo vim /etc/mysql/conf.d/disable_mysql_strict_mode.cnf

محتوای زیر را در فایل اضافه کرده و آن را ذخیره نمایید.

[mysqld] 
sql_mode="IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 

اکنون سرویس MySQL را مجدداً راه‌اندازی کنید تا تغییرات اعمال شود.

$ sudo systemctl restart mysql.service

 

این مطلب نیز ممکن است برای شما مفید باشد: فعال سازی دسترسی از راه دور به سرور پایگاه داده MySQL

 

تأیید حالت SQL

برای یافتن مقادیر متغیرهای sql_mode، به کنسول MySQL وارد شده و کوئری زیر را اجرا نمایید.

mysql> SELECT @@sql_mode;

نتیجه‌هایی مانند تصویر زیر را مشاهده خواهید کرد. خروجی را به دقت جستجو کرده و اطمینان حاصل نمایید که عبارت ONLY_FULL_GROUP_BY  و STRICT_TRANS_TABLES در آن وجود نداشته باشد.

 

 

منبع:

tecadmin