当我将ubuntu从15.10升级到16.04时,我的yii项目出现了这个错误:
CDbCommand无法执行SQL语句:SQLSTATE [42000]: 语法错误或访问冲突:1055 SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列 'v4master.A.id',它在功能上不依赖于列 GROUP BY子句;这是不相容的 的sql_mode = only_full_group_by。执行的SQL语句是:
sql代码如下:
$sql = "SELECT A.*,B.`type_name` FROM `".$this->tbl_auth_user_items."` A
INNER JOIN `".$this->tbl_auth_context_types."` B ON A.`type_id` = B.`type_id`
WHERE A.`user_id` = '".$user_id."' GROUP BY A.`type_id`, A.`type_value` ORDER BY A.`type_id` DESC";
return $this->_db->createCommand($sql)->queryAll();
答案 0 :(得分:0)
表示您的升级意味着db升级到mysql 5.7,如果是这样,您必须知道 从mysql 5.7开始,默认情况下不允许在没有聚合功能的情况下使用列而不在group by中提及
如果你需要不同的结果集,ypu应该使用distinct
子句而不是分组
$sql = "SELECT DISTINCT
A.*,B.`type_name`
FROM `".$this->tbl_auth_user_items."` A
INNER JOIN `".$this->tbl_auth_context_types."` B ON A.`type_id` = B.`type_id`
WHERE A.`user_id` = '".$user_id."'
ORDER BY A.`type_id` DESC";
return $this->_db->createCommand($sql)->queryAll();
或(但已弃用)您可以更改sql_mode以恢复为先前版本行为
来回
sql_mode = 'ONLY_FULL_GROUP_BY';
到
SET sql_mode = ''
答案 1 :(得分:0)
在Mysql上运行此查询;
Class App extends Component{
render(){
return(
<Section>
<Content content="HELLO WORLD!" />
<Content content="HELLO UNIVERSE!" />
</Section>
)
}
}