Ако приложението ви е написано за по-стари версии на MySQL и не е съвместимо със строг SQL режим в MySQL 5.7, можете да деактивирате строг SQL режим. Например приложения като WHMCS 6 и Craft 2 не поддържат строг SQL режим.
Ако използвате WHMCS 7, вижте нашата статия за персонализиране на MySQL за WHMCS 7.За да деактивирате строг SQL режим, SSH влезте във вашия сървър като root и създайте нов конфигурационен файл с помощта на nano или редактор по ваш избор:
sudo nano /etc/mysql/conf.d/disable_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
Запазете файла, като натиснете CTRL + X , след това y , след това ENTER за да потвърдите промените.
Накрая рестартирайте MySQL с тази команда:
sudo service mysql restart
Тази промяна деактивира две настройки на режима на SQL, STRICT_TRANS_TABLES и ONLY_FULL_GROUP_BY, които бяха добавени в MySQL 5.7 и причиняват проблеми за някои по-стари приложения.
Потвърждаване, че стриктният SQL режим е деактивиран
Можете да потвърдите, че стриктният SQL режим е деактивиран, като изпълните тази команда като root :
sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'
Ако стриктният режим е деактивиран, няма да видите никакъв изход от тази команда.
Ако деактивирането на строг режим ви създава проблеми, можете да го активирате отново, като изтриете този файл и рестартирате MySQL отново.
Как изглеждат стриктните грешки в SQL режим
Ако приложението ви не е съвместимо със строг SQL режим, често ще виждате SQL грешки като:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yourdbname.tblannouncements.date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by