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

时间: 2022-05-11

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

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

sql server 2008数据库无法启动的解决办法(图文教程)

事故起因: 之前使用SQL Server2008+VS2010开发,安装VS2012后数据库忽然无法连接 发现SQL Server配置管理器显示远程过程调试失败 原因&对策: VS2012中自带的Local DB和Server2008冲突 在添加和删除程序中删除"Microsoft SQL Server 2012Local DB"后问题应该解决 祸不单行: 远程过程调试失败后出现了"请求失败或服务未及时响应",服务仍旧无法启动 数据库服务无法启动的常见原因:

win2008 r2安装SQL SERVER 2008 R2 不能打开1433端口设置方法

服务器:WINDOWS SERVER 2008 R2 SQL:SQL SERVER 2008 R2 背景:同一个公司同一个局域网  网络可以ping通  但是不能连接服务器数据库  提示错误1326 前期设置: 经过前期设置都不行  telnet localhost 1433还是失败 后期设置: OK  到现在成功了. 谢谢网友的提问以及各位的热心回答   在此处整理成文   供各位参考   如有问题请留言

SQL Server 2008 R2安装配置方法图文教程

Microsoft SQL Server 2008 R2安装图解 工具: SQL Server 2008 R2安装光盘或镜像ISO 安装的准备过程: 插入2008 R2安装光盘或加载镜像ISO文件,进入SQL Server安装中心后跳过"计划"内容,直接选择界面左侧列表中的"安装" 之后进入"安装程序支持规则"安装界面,安装程序将自动检测安装环境基本支持情况,需要保证通过所有条件后才能进行下面的安装,如图所示.当完成所有检测后,点击"确

SQL Server 2008 R2 超详细安装图文教程

一.下载SQL Server 2008 R2安装文件 cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso 二.将安装文件刻录成光盘或者用虚拟光驱加载,或者直接解压,打开安装文件,出现下面的界面 安装SQL Server 2008 R2需要.NET Framework 3.5 SP1支持 这里我们的操作系统是Windows Server 2008 R2,已经默认自带了.NET Framework 3.5 SP1 直接点确定 选择

SQL Server 2000向SQL Server 2008 R2推送数据图文教程

最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他"服务器"向我们服务器推送的方式实现.我们服务器使用的是sql server 2008 R2,其他"服务器"使用的都是SQL Server 2000,还都是运行在Windows XP上的,整个过程遇到了一些问题,也参考了一些文档,最终费了好多事才算搞定. [一.配置分发服务器] SQLServer 2000的复制服务包括三个角色:发布服务器.分发服务器和订阅服务器,关系如图1所示. 图1 其中

SQL Server 2008 R2 应用及多服务器管理

SQL Server 2008 R2推出了管理SQL服务器数据库引擎的多个实例的SQL服务器工具,使用这些工具可以通过中央服务器对多个SQL Server服务器进行快速.高效的管理. 管理SQL引擎多实例的工具 使用SQL Server Management Studio中的工具浏览器可以把现有的SQL Server 2008 R2数据层应用程序和数据库引擎实例加入到SQL服务器工具中进行集中的管理. 另外还推出了一个称作数据层应用(DAC)的管理单元,这个管理单元提供了用于管理SQL服务器工具

SQL Server 2008 R2数据库镜像部署图文教程

概述 "数据库镜像"是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中.建议使用不同位置的两台服务器来承载.在同一时刻,其中一台上的数据库用于客户端访问,充当"主体服务器"角色:而另一台则根据镜像会话的配置和状态,充当热备份服务器,即"镜像服务器角色",这两种角色不是绝对的. 优点 l 增强了数据保护功能 l 提高了数据库的可用性 l 提高了生产数据库在升级

SQL Server 2008 R2登录失败的解决方法

为大家分享SQL Server 2008 R2登录失败的解决方法 1.启动SQL Server 2008 Management Studio,会看到 2.里面有一个 身份验证.这个 身份验证 的下拉列表里面有两个选项: Windows 身份验证 和 SQL Server 身份验证. 它们有什么区别: Windows 身份验证是指:你可以使用你电脑Windows系统的用户名和密码进行登入.如果你的电脑没有设置密码,那么就不需要输入用户名和密码,直接点击连接就可以登入. 我们一般使用第二种身份验证:

SQL Server 2008 R2占用cpu、内存越来越大的两种解决方法

SQL Server 2008 R2运行越久,占用内存会越来越大. 第一种: 有了上边的分析结果,解决方法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使用任务计划定期执行下边批处理: net stop sqlserveragent net stop mssqlserver net start mssqlserver net start sqlserveragent 第二种: 进入Sql server 企业管理器(管理数据库和表的,这个都不知道就不用往下看了),在数据库