在centos安装了一个测试数据库,然后写了个sql,sql如下select menu_area,area_name,SUM(version) as version from area_menu group by menu_area,然后报错了。
这是具体错误,ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_tl.emp.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by。
看了一下mysql的说明,这是select的字段有的不在group子句中,然后修改select menu_area,area_name,SUM(version) as version from area_menu group by menu_area,area_menu 运行成功。
但是这并没有从根源上解决问题,后来网上看了一下,说是去掉only_full_group_by这个属性,于是进入mysql
1.输入指令mysql - u root -p
2.select @@sql_mode
查询出来的结果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
可以执行set临时解决
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
但是这样mysql重启后又失效了,在centos里面查找my.cnf文件
然后将
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION写入
然后重启mysql,查询
已经修改成功,然后执行sql
select menu_area,area_name,SUM(version) as version from area_menu group by menu_area
运行成功,问题解决。