which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql

03-11 1547阅读 0评论

1、group by中的分组字段和select后的字段要保持一致;

which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql,which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,安装,服务器,第1张
(图片来源网络,侵删)

2、通常group by和聚合函数一起使用,但也可以不包含聚合函数,根据业务需求决定;

3、常用的聚合函数有max()、min()、avg()、sum()、count()等。

这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题:

mysql 5.7.5版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准"。

很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。

解决方案一:使用函数ANY_VALUE()包含报错字段

which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql,which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,安装,服务器,第2张
(图片来源网络,侵删)

SELECT ANY_VALUE(ID),USER_ID,ANY_VALUE(problems),ANY_VALUE(last_updated_date) FROM  t_iov_help_feedback GROUP BY USER_ID;

解决方案二:通过sql语句暂时性修改sql_mode

SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据库下执行:

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

解决方案三:通过配置文件永久修改sql_mode

which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql,which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,安装,服务器,第3张
(图片来源网络,侵删)

mysql安装在服务器上和安装在本地,修改配置文件的方式有点区别。

编辑my.cnf文件

文件地址一般在:/etc/my.cnf,/etc/mysql/my.cnf

找到sql-mode的位置,去掉ONLY_FULL_GROUP_BY

然后重启MySQL;service mysql restart

有的my.cnf中可能没有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

注意要加入到[mysqld]下面,如加入到其他地方,重启后也不生效

对于docker 下安装的mysql, 重启容器,数据会丢失的 。

最常见的数据持久化方式是使用Docker数据卷或者将主机的文件夹挂载到容器中。这样,即使容器被终止或重启,卷中的数据与挂载的文件夹中的数据会保持不变,确保数据的持久化。


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1547人围观)

还没有评论,来说两句吧...

目录[+]