Возникла ошибка при которой необходимо вставлять все неаггрегированные поля. Такое происходит, поскольку текущий sql_mode
установлен в only_full_group_by
. И это вызывает ошибку:
SELECT list is not in GROUP BY clause and contains nonaggregated column which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Есть несколько способов исправить подобное поведение
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
или перед запросом выполнить SET sql_mode = ''
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Либо есть вариант изменения режима в файле настройки mysql
/etc/mysql/my.cnf
или /etc/mysql/mysql.conf.d/mysqld.cnf
и там добавить в разделе [mysqld]
строчку sql_mode="NO_ENGINE_SUBSTITUTION"
Перезагружаем mysql: service mysql restart
Источники:
Ошибка mysql sql_mode=only_full_group_by
Error related to only_full_group_by when executing a query in MySql