mysql的command mode,mysql sql_mode=only_full_group_by的问题

本文介绍在CentOS系统中遇到的MySQL only_full_group_by问题及其解决过程。通过调整SQL语句和修改MySQL配置文件my.cnf中的sql_mode参数,最终解决了在使用group by时出现的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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写入

c2974ca8ca02837986e299349fb96e0c.png

然后重启mysql,查询

9ec24e51a69a65de33596870f8efa8bf.png

已经修改成功,然后执行sql

select menu_area,area_name,SUM(version) as version from area_menu group by menu_area

bfce83354f6e50b534401938d9d68317.png

运行成功,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值