mysql5.7版本sql_mode=only_full_group_by问题完美解决

本文详述了在升级至MySQL5.7后遇到的ONLY_FULL_GROUP_BY问题解决方案。通过调整my.cnf文件权限,确保数据库正确读取配置,避免因权限过大导致的配置忽略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天升级mysql数据库至5.7版本,启动程序发现好多功能出现sql_mode=only_full_group_by的问题,几经波折,终于完美解决问题,特作总结。

首先查看数据库的sql_mode:

select @@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

发现结果中有ONLY_FULL_GROUP_BY这一项,修改后重启数据库,再查询,ONLY_FULL_GROUP_BY不存在,欣喜若狂,测试程序,发现还是报这个错误,然后打开mysql的启动配置文件my.cnf,发现里面的参数sql_mode的值已经不包含ONLY_FULL_GROUP_BY了,但是不清楚为什么没有生效,所以怀疑是不是mysql的启动没有读取my.cnf文件

执行指令 

mysql --help|grep my.cnf

结果为mysql的配置读取顺序:

/etc/my.cnf
basedir/my.cnf
datadir/my.cnf
--defaults-extra-file    #在读取全局配置文件之后,读取用户配置文件(~/.my.cnf)之前,读取extra指定的参数文件
~/.my.cnf      #家目录下面的隐藏文件,my.cnf前面的点,说明my.cnf是隐藏文件 

我修改的文件是/etc/my.cnf,按理来说,应该生效才对,但是感觉mysql启动跳过了这个文件,而且提示

World-writable config file '/etc/my.cnf' is ignored

字面意思为启动忽略此配置文件,造成的原因可能是此文件的访问权限太大(即非root用户也可以修改),所以mysql启动时认为其不安全,就跳过此配置,寻找下一个配置,到这里,想必大家应该知道解决方法了吧?

我这里查看/etc/my.cnf的权限

ls -l /etc/my.cnf

结果为:

 -rwxrwxrwx  root root 24 Oct 16 16:07 /etc/my.cnf    即777(所有用户都有读、写、执行权限)

这样肯定不合理,将其改为644(只有拥有者有读写权限;而属组用户和其他用户只有读权限。)即可

chmod 644 /etc/my.cnf

欢迎大家和帝都的雁积极互动,头脑交流会比个人埋头苦学更有效!共勉!

公众号:帝都的雁

MySQL 5.7中,当执行查询语句时可能会出现"this is incompatible with sql_mode=only_full_group_by"的错误。这是由于MySQL 5.7默认启用了严格的sql_mode=only_full_group_by配置,按照SQL92标准要求,当使用GROUP BY语句时,必须包含所有查询的字段或者使用聚合函数。 为了兼容MySQL 5.7以下版本,有些旧的源码中没有按照此规则编写。因此,当执行这些旧的代码时就会出现该错误。 要解决这个问题,有以下几种方法: 1. 将查询中的所有字段都添加到GROUP BY子句中。这样做可以保证查询的合法性,但可能会导致结果不准确。 2. 使用聚合函数将其他字段进行聚合。例如,如果只需要对某个字段进行分组,可以使用SUM()、COUNT()或者其他合适的聚合函数对其他字段进行聚合。 3. 修改MySQLsql_mode配置,将only_full_group_bysql_mode中移除。这样可以恢复到较早版本的默认行为,但可能会引入其他潜在的问题。 需要注意的是,修改MySQL的配置需要具备管理员权限。可以通过修改my.cnf或者my.ini文件中的配置来实现。 总之,"this is incompatible with sql_mode=only_full_group_by"错误是由于MySQL 5.7中默认启用了严格的sql_mode=only_full_group_by配置所引起的。可以通过添加所有字段到GROUP BY子句,使用聚合函数对其他字段进行聚合,或者修改MySQLsql_mode配置来解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [this is incompatible with sql_mode=only_full_group_by解决方案](https://blog.csdn.net/weixin_43818327/article/details/125598187)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [mysql 5.7 this is incompatible with sql_mode=only_full_group_by](https://blog.csdn.net/qq_37752382/article/details/113310996)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [解决MySQL 5.7.9版本sql_mode=only_full_group_by问题](https://download.csdn.net/download/weixin_38697063/13699570)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值