发布于2022-06-15 22:26 阅读(633) 评论(0) 点赞(15) 收藏(2)
最近在部署项目之后,运行出现报错:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘grades.order_id’
which is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by
字面意思理解:
SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“grades.order_id” 它在功能上不依赖于
GROUP BY 子句中的列; 这与 sql_mode=only_full_group_by 不兼容
使用GROUP BY 语句违背了sql_mode=only_full_group_by。因为mysql版本5.7之后默认的模式是ONLY_FULL_GROUP_BY。
查看官方文档,发现从 MySQL 5.7.5 开始,默认 SQL 模式包括 ONLY_FULL_GROUP_BY。 (在 5.7.5 之前,MySQL 不检测函数依赖,并且默认不启用 ONLY_FULL_GROUP_BY。)这可能会导致一些sql语句失效。
执行命令vim /etc/mysql/conf.d/mysql.cnf
修改配置文件
如果my.cnf中有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
保存之后,执行命令service mysql restart
重启mysql即可。
2022.06.10更新
最近用docker安装mysql又出现这个问题,修改配置文件之后,重启mysql发现连不上mysql
于是查看错误信息 docker logs -f --tail 10 mysql
,出现报错:
Error while setting value
‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
to ‘sql_mode’
原来mysql 8.0 以上取消了NO_AUTO_CREATE_USER这个关键字,在my.cnf中的sql_mode中删掉这个关键字即可。
创作不易,关注、点赞就是对作者最大的鼓励,欢迎在下方评论留言 欢迎关注微信公众号:键指JAVA,定期分享Java知识,一起学习,共同成长。
作者:zhqu4399
链接:http://www.javaheidong.com/blog/article/456737/e722d5934a0eca534111/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!