当我尝试在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设置。
答案 0 :(得分:1)
表达式1
SELECT list is not in GROUP BY clause and contains nonaggregated column 'spd.quantity' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
只需在查询上方添加以下行即可。
$this->db->query("SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));");
答案 1 :(得分:0)
这不是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