当我尝试在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
文件并禁用only_full_group_by
的强制SQL模式。 Disable ONLY_FULL_GROUP_BY