Когда я пытаюсь выполнить этот запрос в CodeIgniter 3, он выдает мне эту ошибку:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'forum.phrases.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
SELECT `id`, `keyword`, `value`, `language` FROM `phrases` GROUP BY `language`
PHP:
$query = $this->db->select("id, keyword, value, language")
->group_by("language")
->get("phrases")
->result();
Я немного погуглил, но не совсем понимаю ответы, в основном потому, что запросы не связаны с CI и очень сложны … Как это можно исправить в codeigniter?
Я не хочу менять какие-либо настройки MySQL.
Это не специфическая проблема CodeIgniter — она является частью стандарта SQL и встроена в MySQL. Он существует для проверки ваших данных и поощрения хорошего дизайна базы данных и запросов. У вас есть два варианта исправить это:
Вы можете писать запросы «правильным» способом. Это было проблемой со спецификацией SQL92, но позже она была изменена в стандарте SQL99 для разрешения неагрегатов: https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
Другой способ, и более распространенный ответ, это изменить ваш my.cnf
файл и отключить принудительный режим SQL only_full_group_by
, Отключить ONLY_FULL_GROUP_BY
Других решений пока нет …