Відключення sql_mode=only_full_group_by до mysql 5.7 ubuntu 18.04

Іноді трапляється, що потрібно завести старий сайт на новому програмному забезпеченні. У моєму випадку, сайт, що працює на mysql 5.5, потрібно було для налагодження завести на mysql 5.7. Тут же виникла помилка "42000":

SQLSTATE[42000]: Syntax error або access violation: 1055 Expression #1 of ORDER BY clause 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.

Не використовуйте це на продакшен.

4461 0

Відгуки

Поки немає жодного відгуку. Станьте першим!
Тільки авторизовані користувачі можуть залишати відгуки Вхід

Схожі статті

Mysql база шин та дисків

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