sql模式设置引起的问题解决办法

目录
  • 1 报错类似如下
  • 2 解决办法
    • 2.1 查看全局sql模式
    • 2.2 设置全局sql模式
    • 2.3 查看当前sql模式
    • 2.4 设置当前sql模式
  • 3 永久生效的解决办法
    • 3.1 找到my.cnf文件
    • 3.2 编辑my.cnf文件
    • 3.3 重启数据库服务

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模式设置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 设置sql server 2008 r2的身份验证模式的图文教程

    我在安装sql server2008R2的时候,选择了Windows身份验证模式,现在想把它改为sql server验证模式,怎么修改呢?其实方法步骤很简单,下面小编给大家分享修改方法. 方法如下所示: 1.先通过windows身份验证模式登录 2.选中服务器,右键属性,点击属性 3. 4. 以上所述是小编给大家介绍的设置sql server 2008 r2的身份验证模式的图文教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • sql模式设置引起的问题解决办法

    目录 1 报错类似如下 2 解决办法 2.1 查看全局sql模式 2.2 设置全局sql模式 2.3 查看当前sql模式 2.4 设置当前sql模式 3 永久生效的解决办法 3.1 找到my.cnf文件 3.2 编辑my.cnf文件 3.3 重启数据库服务 1 报错类似如下 数据库错误: Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Expression 39 of SELECT list is not in

  • MySQL中SQL模式的特点总结

    前言 SQL模式影响MySQL支持的SQL语法和执行的数据验证检查. MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值.DBA可以设置全局SQL模式以匹配站点服务器操作要求,并且每个应用程序可以将其会话SQL模式设置为其自己的要求. 模式会影响MySQL支持的SQL语法以及它执行的数据验证检查.这使得在不同环境中使用MySQL以及将MySQL与其他数据库服务器一起使用变得更加容易. 下面话不多说了,来一起看看详

  • javascript 中设置window.location.href跳转无效问题解决办法

    javascript 中设置window.location.href跳转无效问题解决办法 问题情况 JS中设置window.location.href跳转无效 代码如下: <script type="text/javascript"> function checkUser() { if(2!=1){ window.location.href="login.jsp" rel="external nofollow" rel="e

  • Linux下IP设置脚本的实例及遇到问题解决办法

    Linux下IP设置脚本的实例及遇到问题解决办法 背景 一个Java web项目有一个功能是IP修改,Linux的IP修改脚本如下: #!/bin/bash #useing parameter ip:netmask:gateway:dns1 #system version:centos6,7/redhat6,7 #read parameter ipaddr=`echo $1|cut -d ":" -f 1` netmask=`echo $1|cut -d ":" -

  • win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法

    win10下安装mysql 1. 官网下载mysql 网址:https://www.mysql.com/downloads/ download页面往下拉:点击下图红框: 按下图指示操作: 下载之后解压: 解压目录如下图所示: 2. 配置环境变量 此电脑->属性->高级系统设置->环境变量->用户变量中的path(双击)->编辑(添加mysql的安装目录下的bin目录).具体步骤如下图操作: (我一般会将用户变量和系统变量都添加) 3. 配置初始化的my.ini文件(新解压后的

  • IOS 下获取 rootviewcontroller 的版本不同的问题解决办法

    IOS 下获取 rootviewcontroller 的版本不同的问题解决办法 一般 原生的 [[UIApplication sharedApplication].keyWindow.rootViewController presentModalViewController:self animated:NO]; 可以 获取  系统的  rootviewcontroller 但 cocos2d-x 2.1.1 在 appcontroller.mm 内定义的 加载方法是 // Set RootVie

  • IOS 键盘挡住输入框的问题解决办法

    IOS 键盘挡住输入框的问题解决办法 在iOS开发发现一个问题,有时输入框位于低出时,当编辑输入时,弹出的键盘会挡住输入框,令用户看不清楚实时的输入情况,使界面交互极度不友好. 经过查资料终于解决了这个问题. 解决思路: 1. 输入框监听UIControlEventEditingDidBegin事件,当用户开始输入时,将整个view上移. 2. 输入框监听UIControlEventEditingDidEnd事件,当用户结束输入时,将整个view下移,恢复到原位置. 输入框监听事件: [text

  • 在iOS10系统中微信后退无法发起ajax请求的问题解决办法

    在IOS10的系统中,在微信客户端中打开网页中的后退按钮,url后退为之前浏览网页的url,但是有时候网页会显示空白,后经过一步步调试,发现是发送ajax请求出现了问题,ajax返回的status的值为0. status的值为0的情况 1.If the state is UNSENT or OPENED, return 0.(如果状态是UNSENT或者OPENED,返回0) 2.If the error flag is set, return 0.(如果错误标签被设置,返回0) 3.Return

  • IOS React等Title不显示问题解决办法

    IOS React等Title不显示问题解决办法 单页应用里整个页面只会在第一次完全刷新,后面只会局部刷新(一般不包括head及里面的title),所以无法在服务器端控制title,只能在页面刷新的时候通过js修改title.常规做法如下,可惜在iOS微信浏览器无效. 问题原因: 因为微信浏览器首次加载页面初始化title后,就再也不监听 document.title的change事件. 解决方案: 修改title之后,给页面加上一个内容为空的iframe,随后立即删除这个iframe,这时候会

  • Android Studio控制台出现中文乱码(方框)问题解决办法

    Android Studio控制台出现中文乱码(方框)问题解决办法 最近遇到个恶心的事儿,就使用死丢丢的时候,发现怎么我的控制台输出中文都显示方框???别人都没事,恶心坏我了.经过各种百度,终于找到解决办法,办法也是够恶心的.我们一起来看看吧. 乱码显示结果如下: 解决办法很简单,设置字体为YaHei即可.(可能之前下载的苹果编程字体不支持吧) 修改后结果可以正常显示了 再次简单做个记录, 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

随机推荐