понедельник, 25 января 2016 г.

MySQL 5.7 отключение ONLY_FULL_GROUP_BY

В MySQL 5.7 появился такой режим как ONLY_FULL_GROUP_BY, который более строго обрабатывает запросы с GROUP_BY. Подробнее можно почитать в документации.
По хорошему, конечно, запросы выпадающие с подобной ошибкой нужно пересмотреть и переписать. Но если она выпала "внезапно" после обновления, да еще и на production-сервере, быстрым решением проблемы будет отключение этого режима.
Подключаемся к MySQL:

# mysql -u root -p
вводим пароль и командуем:

mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY,", ""));

и
mysql> SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY,", ""));

тем самым меняем значение на прежнее, но за исключением подстроки "only_full_group_by,".
Проверить результат и убедиться что режим выключен можно командой:

mysql> SELECT @@sql_mode;

Плюс такого подхода в том, что перезапуск MySQL-сервера не требуется.