Отключение sql_mode=only_full_group_by в mysql 5.7 ubuntu 18.04

Иногда случается, что требуется завести старый сайт на новом программном обеспечении. В моем случае, сайт работающий на mysql 5.5 потребовалось для отладки завести на mysql 5.7. Тут же возникла ошибка "42000":

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'db.books' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Это все из-за того, что в mysql 5.7 введены правила, которые для ускорения работы с базой препятствуют работе некоторых запросов (если я понял правильно). На продакшене стоит переписать данный запрос. Так как будет потеряна производительность. Но на локалке можно произвести действия описанные ниже.

Пробовал для Ubuntu 18.04, mysql 5.7 (как и писал выше).

В конец файла /etc/mysql/my.cnf добавляем строки:

sudo nano /etc/mysql/my.cnf

Вписываем в конец:

[mysqld]
sql_mode="NO_ENGINE_SUBSTITUTION"

Рестарт mysql

sudo service mysql stop

sudo service mysql start

Предупреждение

Изначально в 5.7 sql_mode действуют такие ключи:

STRICT_TRANS_TABLES, ONLY_FULL_GROUP_BY, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

Своим действием мы отключаем все ключи, вгоняя mysql 5.7 в нестандартный режим работы, подобный для версии mysql 5.6.

Не используйте это на продакшене.

4459 0

Комментарии

Пока нет ни одного отзыва. Оставьте отзыв первым
Только авторизованные пользователи могут оставлять комментарии Вход

Похожие статьи

Mysql база шин и дисков

База автомобильных шин и дисков. В базе присутствует: производитель, модель, год, модификация, PCD, диаметр, гайка, заводские размеры шины и диска, возможные варианты замены, тюнинг шины и диски. Грузовых автомобилей в базе нет.