执行sql报错only_full_group_by的2种解决方法
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
一、前言
最近老项目换新数据库(都是mysql),有些在老数据库可以执行的sql,在新数据库执行就会报错,如下:
1 2 3 4 5 6 7 8 | [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的字段必须和查询字段一致才行,否则不让执行,例如:
但是这样不太能符合原本需要的功能,而且老项目有很多这样的不标准语句,都改不现实。
二、解决方法
修改数据库配置。搜到2种方法:
1.临时关闭only_full_group_by模式
(1)先查看自己的数据库是怎么配置的:
1 2 3 | 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
去掉,再设置下:
1 | 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]
后增加配置:
1 | 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。
三、备注
本人执行
1 | 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Ubuntu搭建Mysql+Keepalived高可用的实现(双主热备)
本文主要介绍了Ubuntu搭建Mysql+Keepalived高可用的实现(双主热备),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-11-11Mysql 错误too many connections解决方案
这篇文章主要介绍了Mysql 错误too many connections解决方案的相关资料,这里提供了如何解决此问题,需要的朋友可以参考下2016-11-11MySQL优化之大字段longtext、text所生产的问题
本文主要介绍了MySQL优化之大字段longtext、text所生产的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-05-05
最新评论