MySQL sql模式设置引起的问题


Posted in MySQL onMay 15, 2022

1 报错类似如下

数据库错误: Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Expression 39 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.ss.student_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
The error may exist in URL [jar:file:/usr/local/xxxxx.jar!/BOOT-INF/lib/summer-system-4.6.0.jar!/mapper/system/SuOrgProgramMapper.xml]
The error may involve com.ruoyi.system.mapper.SuOrgProgramMapper.selectSuOrgProgramList-Inline
The error occurred while setting parameters
SQL: select sop.*,so.org_name as orgName,sa.activity_name as activityName,sa.activity_name_en as activityNameEN,         ss.student_id as matchedStudentId,ss.name as matchedStudentName, su.login_name as email, su.real_name AS firstName, su.nickname as nickname         from su_org_program sop         inner join su_activity sa on sop.activity_id=sa.activity_id         inner join su_org so on so.org_id = sop.org_id         left JOIN sys_user su ON sop.main_teacher_id = su.sub         left join (select * from su_student_program where is_matched=1) ssp on ssp.org_program_id= sop.org_program_id         left JOIN su_student ss on ssp.student_id=ss.student_id          WHERE  sop.org_id = ?          GROUP BY sop.org_program_id
Cause: java.sql.SQLSyntaxErrorException: Expression 39 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.ss.student_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Expression 39 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.ss.student_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

2 解决办法

2.1 查看全局sql模式

使用如下m命令:

select @@global.sql_mode;

如下:

mysql> select @@global.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@global.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 |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

2.2 设置全局sql模式

使用如下命令:

SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

如下:

ysql> SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>

2.3 查看当前sql模式

使用如下命令:

select @@sql_mode;

如下:

mysql> select @@sql_mode;
+------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                             |
+------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>

2.4 设置当前sql模式

使用如下命令:

set @@sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

如下:

mysql> set @@sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>

3 永久生效的解决办法

3.1 找到my.cnf文件

可以使用如下命令查找,一般在 /etc/下或者 /etc/mysql/ 目录下

find /etc/ -name my.cnf

3.2 编辑my.cnf文件

vi /etc/mysql/my.cnf

然后增加以下内容:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

3.3 重启数据库服务

systemctl restart mysqld

到此这篇关于sql模式设置引起的问题解决办法的文章就介绍到这了,更多相关sql模式设置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

MySQL 相关文章推荐
mysql死锁和分库分表问题详解
Apr 16 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
SQL实现LeetCode(177.第N高薪水)
Aug 04 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
MySQL Server 层四个日志
Mar 31 MySQL
MySQL创建管理子分区
Apr 13 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL自定义函数及触发器
Aug 05 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
Dec 24 MySQL
MySQL 逻辑备份 into outfile
May 15 #MySQL
Mysql开启外网访问
May 15 #MySQL
Mysql索引失效 数据库表中有索引还是查询很慢
MySQL查询日期时间
May 15 #MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 #MySQL
MySQL 计算连续登录天数
May 11 #MySQL
mysql 获取相邻数据项
May 11 #MySQL
You might like
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php发送post请求函数分享
2014/03/06 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
jquery tools之tooltip
2009/07/25 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
在keras中实现查看其训练loss值
2020/06/16 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
物业管理计划书
2014/01/10 职场文书
《满井游记》教学反思
2014/02/26 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
家长通知书教师评语
2014/04/17 职场文书
个人合伙协议书范本
2014/10/14 职场文书
生产现场禁烟通知
2015/04/23 职场文书
货款欠条范本
2015/07/03 职场文书
Python 实现Mac 屏幕截图详解
2021/10/05 Python