@yii2-prog11

Почему возникает ошибка Syntax error or access violation: 1055 Expression #2?

Я перенес проект yii2 на хостинг, но при добавлении нового пользователя в бд, ввозникает ошибка
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'iyoxi99_yii2advanced.activity.date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
The SQL being executed was: SELECT user_id, date, SUM(activity) AS sum FROM `activity` WHERE `date` BETWEEN ' 2019-06-16 ' AND ' 2019-06-23 ' GROUP BY user_id ORDER BY sum DESC LIMIT 1

Вот код, где она обнаруживается :
$query = "SELECT user_id, date,  SUM(activity) AS sum FROM `activity` WHERE `date` BETWEEN ".$q.$count['date_start'].$q. " AND ". $q.$count['date_end'].$q ." GROUP BY user_id ORDER BY sum DESC LIMIT 1";
                $active_user = Activity::findBySql($query);
                    $active_user->where(['between', 'date', $count["date_start"], $count["date_end"]])
                    ->one();


Как это решить??
Я так понимаю это из-за того , что я делал сайт используя MySQL 5.6 , а на хостинге используется MySQL 5.7? Если это причина, то как это решить?
  • Вопрос задан
  • 4611 просмотров
Решения вопроса 2
AlekseyNikulin
@AlekseyNikulin
недочеловек
yii2-prog11. Ручка строгости вашего MySQL сервера выкручена на максимум, поэтому в группировку должны входить все поля. Либо оборачивайте их в any_value() . Но это уже не есть хорошо.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Переписать запрос по стандарту SQL. При использовании GROUP BY все поля, выбираемые в SELECT должны быть либо полями, по которым идёт группировка, либо результатами агрегатных функций.
У вас поле date не входит ни в GROUP BY, ни в агрегатную функцию. Дата из какой именно агрегируемой строки должна попасть в ответ?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы