MySQL ошибка only_full_group_by

Возникла ошибка при которой необходимо вставлять все неаггрегированные поля. Такое происходит, поскольку текущий 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

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.