执行sql报错only_full_group_by的2种解决方法
一、前言
最近老项目换新数据库(都是mysql),有些在老数据库可以执行的sql,在新数据库执行就会报错,如下:
[SQL]SELECT * FROM bsc_user_t A group by user_name limit 100 [Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'otp.A.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
意思是说数据库的模式是sql_mode=only_full_group_by
,group by的字段必须和查询字段一致才行,否则不让执行,例如:
SELECT user_name FROM bsc_user_t A group by user_name limit 100
但是这样不太能符合原本需要的功能,而且老项目有很多这样的不标准语句,都改不现实。
二、解决方法
修改数据库配置。搜到2种方法:
1.临时关闭only_full_group_by模式
(1)先查看自己的数据库是怎么配置的:
show VARIABLES LIKE '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
(2)然后,把ONLY_FULL_GROUP_BY
去掉,再设置下:
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';
(3)注意这种方法,重启mysql后会失效
2.永久关闭only_full_group_by模式
(1) 找到配置文件/etc/my.cnf(或则关联文件夹找到mysql-server.cnf)
(2) 找到当前配置的sql_mode
那行,去掉ONLY_FULL_GROUP_BY
;
如果没有,就在文件内的[mysqld]
后增加配置:
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
(3)保存配置文件后,重启Mysql。
三、备注
本人执行
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';
报错了:
[Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
说明当前用户没有权限;需要联系管理员执行才行;
改服务器配置也同理,如果没有权限,联系管理员。
总结
到此这篇关于执行sql报错only_full_group_by的2种解决方法的文章就介绍到这了,更多相关执行sql报错only_full_group_by内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MySQL 搭建双主复制服务并通过 HAProxy 负载均衡的过程详解
在数据库管理中,数据的备份和同步是至关重要的环节,而双主复制(Dual Master Replication)作为一种高可用性和数据同步的解决方案,本文将介绍MySQL双主复制的配置过程并通过 HAProxy 负载均衡,感兴趣的朋友一起看看吧2024-03-03一文带你永久摆脱Mysql时区错误问题(idea数据库可视化插件配置)
在MySQL启动时会检查当前系统的时区并根据系统时区设置全局参数system_time_zone的值,下面这篇文章主要给大家介绍了关于如何永久摆脱Mysql时区错误问题(idea数据库可视化插件配置)的相关资料,需要的朋友可以参考下2022-08-08
最新评论