Когда я пытаюсь запустить этот запрос в 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();
Я немного искал Google, но я не совсем понимаю ответы, в основном потому, что запросы не связаны с CI и очень сложны... Как это можно зафиксировать в кодеигнитре?
Я не хочу изменять какие-либо настройки 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
$query = $this->db->query("SELECT id, keyword, value, language FROM phrases GROUP BY language"); var_dump($query->result());
а$query = $this->db->query("SELECT id, keyword, value, language FROM phrases GROUP BY language"); var_dump($query->result());
?