Режим SQL only_full_group_by, вызывающий ошибку в Lumen 5.7 - PullRequest
0 голосов
/ 29 ноября 2018

Я обновил версию люмена с 5.6 до 5.7.В этом пакете подсветки / базы данных v5.7.15 по умолчанию включается режим MySQL only_full_group_by.Это приводит к сбою некоторых из моих запросов Group By.Большинство людей предлагает отключить строгий режим в люмене.Я думаю, что отключить строгий режим не является правильным решением.Есть ли альтернативный запрос в MySQL?Или мне нужно построить логику в PHP?Я использую MySQL 5.6

Я использую запросы типа

SELECT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 
GROUP BY MONTH, YEAR

Я не использую агрегатные функции.Столбец data_created имеет тип данных datetime

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Если вы работаете с MySQL 5.7, вы должны компенсировать full_group_by, изменив свой SQL-запрос, или вы можете удалить опцию full_group_by из настроек mysq

0 голосов
/ 29 ноября 2018

Для запросов такого типа, когда вы не используете агрегатные функции, для которых требуется GROUP BY, вы можете использовать различные значения, например:

SELECT DISTINCT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 

Таким образом, вам не нужно отключать full_group_by ограничение

Также вы можете сделать это следующим образом:

SELECT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 
GROUP BY MONTHNAME(date_created), YEAR(date_created) 
0 голосов
/ 29 ноября 2018

Этот SQL-запрос решит проблему:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

...