我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql:关闭sql_mode=ONLY_FULL_GROUP_BY模式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql:关闭sql_mode=ONLY_FULL_GROUP_BY模式

JAVA后台报错信息:

Caused by: java.sql.SQLSyntaxErrorException: Expression #16 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mysql_data.s.k_persion' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with

原因: mysql默认开启only_full_group_by模式,当碰到不符合格式的group by 语句就会报错;(sql_mode=only_full_group_by 模式 要求 select 多少个字段对象,则group by 后面就需要带上多少个字段对象;)
例如sql语句如下:

-- 查询人员信息,按部门分组,显示姓名和部门SELECT S.PSL_NAME,S.DEPARTMENT  FROM k_persion S GROUP BY DEPARTMENT

运行时就会报错:

 Caused by: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column  'mysql_data.k_persion .PSL_NAME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by  

其大体的意思就是这个sql语句不符合 mysql_data 数据库的group by 格式要求(因为这个数据sql_mode=only_full_group_by),但我们把当sql改成如下格式后就可以运行了:

-- 查询人员信息,按部门分组,显示姓名和部门SELECT S.PSL_NAME,S.DEPARTMENT  FROM k_persion S GROUP BY DEPARTMENT,PSL_NAME

这样的格式是不报错了,但是查询的目标效果却错了;因此我们需要把sql_mode 的 only_full_group_by模式关掉。

解决方式:
1、临时关闭(当mysql重启后失效):
使用sql语句修改的方式修改sql_mode 的Session级和GLOBAL级信息
查看sql_mode 的信息

-- 查看数据库版本和 Session级信息SELECT VERSION(),@@sql_mode;-- 查看数据库版本和 GLOBAL级信息SELECT VERSION(),@@GLOBAL.sql_mode;

我们发现在对应的sql_mode列中都含有 ONLY_FULL_GROUP_BY 参数,因此我们需要把这个属性去掉,打开数据库查询界面,运行如下语句;

 -- 关闭 session级SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));-- 关闭 GLOBAL级SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

再查询sql_mode后发现ONLY_FULL_GROUP_BY 已经没有了,然后再运行我们的sql语句就不报错了。

2、永久关闭:
永久关闭ONLY_FULL_GROUP_BY,需要去修改mysql服务的配置文件my.ini 文件,本人是Win10服务,若是linux服务环境,应该是 XX/etc/my.cnf 的文件。(若想永久生效,修改配置文件是永恒不变的真理…)
找到mysql的my.ini 文件(在mysql服务安装的路径下找),打开文件在[mysqld] 中添加如下语句:

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

如下图:
在这里插入图片描述保存后重启mysql服务即可。

若不确定自己的sql_mode=‘xxxx’ 到底要有哪些参数,可以通过 SELECT @@sql_mode; 查询出自己数据库现有的参数,然后ONLY_FULL_GROUP_BY对象去掉即可。

来源地址:https://blog.csdn.net/h123hlll/article/details/130386184

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql:关闭sql_mode=ONLY_FULL_GROUP_BY模式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql:关闭sql_mode=ONLY_FULL_GROUP_BY模式

JAVA后台报错信息: Caused by: java.sql.SQLSyntaxErrorException: Expression #16 of SELECT list is not in GROUP BY clause and con
2023-08-17

MySQL中ONLY_FULL_GROUP_BY模式的使用

目录一、GROUP BY使用时的关键要点1. 理解 GROUP BY 的作用2. 遵守 ONLY_FULL_GROUP_BY 规则3. 使用 HAVING 进行条件过滤4. 正确排序结果5. 注意空值和 NULL 值二、 ONLY_FULL
MySQL中ONLY_FULL_GROUP_BY模式的使用
2024-09-10

MySQL中sql_mode模式的使用

目录前言介绍1. STRICT_ALL_TABLES2. STRICT_TRANS_TABLES 严格模式3. ALLOW_INVALID_DATES4. ANSI_QUOTES5. HIGH_NOT_PRECEDENCE6. IGNORE
MySQL中sql_mode模式的使用
2024-08-09

php如何关闭debug模式

这篇“php如何关闭debug模式”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php如何关闭debug模式”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们
2023-06-06

win11休眠模式如何关闭

本篇内容介绍了“win11休眠模式如何关闭”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、首先点开底部开始菜单或搜索。 2、接着在上方搜索
2023-07-02

win10如何关闭测试模式

要关闭Windows 10的测试模式,请按照以下步骤操作:1. 打开“设置”(可以通过开始菜单中的齿轮图标访问)。2. 在“设置”窗口中,点击“更新和安全”选项。3. 在左侧的菜单中,选择“开发者选项”。4. 在“开发者选项”中,找到“测试
2023-09-02

access禁用模式如何关闭

要关闭Access禁用模式,可以按照以下步骤操作:打开Access数据库文件。点击“文件”选项卡。选择“选项”。在“Access选项”对话框中,点击“当前数据库”选项卡。在“启动属性”部分,找到“启用禁用模式”选项,并将其取消选择。
access禁用模式如何关闭
2024-03-15

excel护眼模式如何关闭

要关闭Excel的护眼模式,您可以按照以下步骤进行操作:1. 打开Excel应用程序。2. 点击"文件"选项卡,然后选择"选项"。3. 在"Excel选项"对话框中,点击"常规"选项卡。4. 在"常规"选项卡中,找到"当Excel打开时,始
2023-09-12

Win10怎么关闭护眼模式

这篇文章主要讲解了“Win10怎么关闭护眼模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Win10怎么关闭护眼模式”吧!具体步骤:1.进入操作系统,同时按 下Win+R 组合键,打开“运
2023-06-27

win10夜间模式如何关闭

这篇“win10夜间模式如何关闭”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10夜间模式如何关闭”文章吧。1. 打开
2023-07-02

win10如何关闭飞行模式

这篇文章主要介绍“win10如何关闭飞行模式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10如何关闭飞行模式”文章能帮助大家解决问题。win10关闭飞行模式的方法1、首先点击左下角开始,选择
2023-07-01

win10平板模式如何关闭

这篇“win10平板模式如何关闭”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10平板模式如何关闭”文章吧。win10
2023-07-01

redis哨兵模式怎么关闭

要关闭 redis 哨兵模式,请执行以下步骤:将 sentinel 配置文件中的 down-after-milliseconds 设置为 0。删除 sentinel 配置文件。删除 sentinel 数据目录。重启 redis 服务。如何关
redis哨兵模式怎么关闭
2024-06-03

php.ini如何关闭安全模式

本篇内容介绍了“php.ini如何关闭安全模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php.ini关闭安全模式的方法:首先找到并打开
2023-06-20

thinkphp3.2如何关闭调试模式

这篇“thinkphp3.2如何关闭调试模式”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“thinkphp3.2如何关闭调试
2023-06-30

Oracle怎么关闭归档模式

要关闭Oracle数据库的归档模式,可以按照以下步骤操作:使用sysdba权限登录到Oracle数据库。确定当前归档模式的状态。可以执行以下命令:SELECT log_mode FROM v$database;如果查询结果显示为ARCHI
Oracle怎么关闭归档模式
2024-04-09

win11如何关闭开发者模式

今天小编给大家分享一下win11如何关闭开发者模式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、首先在开始菜单中找到齿轮
2023-07-01

编程热搜

目录