解决“java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list,references column”

在一次跑项目的时候,报了这个错。

分析原因:

百度发现是Mysql5.7及以上版本默认将 sql_mode 的 ONLY_FULL_GROUP_BY 模式设置为打开状态

解决办法:

1、将数据库换回5.6及以下版本

2、将数据库中的 ONLY_FULL_GROUP_BY 模式去掉

使用如下sql查询:

select @@global.sql_mode

查询值:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

发现有一个ONLY_FULL_GROUP_BY,将它去掉即可,使用如下sql:

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

很多资料说,这个解决办法重启数据库之后就失效了,目前为止,我重启很多次电脑了,并没有失效。

3、在my.ini文件中加上对应配置重启可彻底解决

就是在[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

但我不知道是不是缺了那个步骤,我加了这个配置之后重启数据库一直失败,重装了数据库服务再加上这个配置还是重启不了,将这个配置注释掉就重启成功了。

=============================================================================================

后面发现“=”后面的值需要加上’'(网上的资料很多都没有加),加上了之后才能重启成功

最后的配置是这个样子的

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

这是配置加入的位置,别加错地方了
在这里插入图片描述

\[1\]这个错误信息是在使用ORDER BY子句时出现的。它表示在ORDER BY子句中引用的列不在SELECT列表中,这与使用DISTINCT关键字不兼容。\[2\]这个错误通常是由于MySQLsql_mode设置中的ONLY_FULL_GROUP_BY模式导致的。在这种模式下,使用GROUP BY查询时,SELECT字段后面只能是GROUP BY后面的分组字段或使用聚合函数包裹的字段。否则,会出现上述错误信息。同样,当使用ORDER BY查询时,不能与SELECT DISTINCT一起使用。\[3\]sql_mode是MySQL的一个配置选项,它定义了MySQL在执行查询时的行为。其中包括ONLY_FULL_GROUP_BY模式,它会导致上述错误。如果你想避免这个错误,可以修改sql_mode的设置,将ONLY_FULL_GROUP_BY模式关闭。 #### 引用[.reference_title] - *1* *2* [Expression #1 of ORDER BY clause is not in SELECT list,references column 'xxxxxxx'](https://blog.csdn.net/hanshanyunhai/article/details/105701771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Caused by: java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list, reference](https://blog.csdn.net/weixin_43232423/article/details/112507291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值