最近使用linux版本的Mysql的时候出现了错误:
SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
最后发现是因为版本问题,在Mysql5.*之后的版本sql_mode缺省值为ONLY_FULL_GROUP_BY,这也是需要修改的地方。
only_full_group_by :使用这个就是使用和oracle一样的group 规则,
select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行
其实这个配置目前个人感觉和distinct差不多的,所以去掉就好 。
进入数据库,输入SHOW SESSION VARIABLES; 命令行 ,找到sql_mode行,查看是否为ONLY_FULL_GROUP_BY
如果是的话,接下来输入
set session sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
即可修改!修改之后的值为下图所示:
还有一个属性要修改 SHOW GLOBAL VARIABLES; 其操作步骤与 2 丝毫不差 , 可照搬操作
set global sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
修改完成之后,再次查询即可
参考了网上的一些解决办法!!!