解决MySql版本问题sql_mode=only_full_group_by
MySql版本问题sql_mode=only_full_group_by
查看sql_mode
select @@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从中去掉,重新设置值。
set @@global.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,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行
set sql_mode ='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这种方式是我个人比较喜欢的.
打开配置文件mysql.cnf
sudo vi /etc/mysql/mysql.cnf
添加配置
sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
重启mysql
sudo service mysql restart
进入mysql查看:
SELECT @@sql_mode;
Windows
在Windows修改mysql安装目录下面配置未见 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=only_full_group_by以及多种解决方案
出错的sql情况
// mysql SELECT * FROM table t GROUP BY t.mobile_no
提示出错:*** which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
原因:
mysql 5.7版本以上sql_mode新加入了only_full_group_by
解决方案1
修改sql_mode(容易被怼,因为大多都是在修改全局的sql_mode)
查看:
select @@sql_mode;
修改:
set @@sql_mode ='';
解决方案2
函数 any_value()
(使用方案一,原本应该是错的sql语句依然执行成功,但有时特殊情况,需要在select 下查询除group以外的值)
SELECT any_value(t.id), t.mobile_no FROM table t GROUP BY t.mobile_no
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
- Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法
- MySQL错误提示:sql_mode=only_full_group_by完美解决方案
- MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法(含举例)
- mysql报错sql_mode=only_full_group_by解决
- mysql 报错 incompatible with sql_mode=only_full_group_by解决
- mysql 8.0 找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
- 解决mysql @@sql_mode问题---only_full_group_by
- mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查问题(windows)
- MySQL中ONLY_FULL_GROUP_BY模式的使用
相关文章
MySQL多表查询内连接外连接详解(使用join、left join、right join和full join)
这篇文章主要给大家介绍了关于MySQL多表查询内连接外连接的相关资料,文中主要介绍的是使用join、left join、right join和full join,文中通过代码介绍的非常详细,需要的朋友可以参考下2023-12-12出现错误mysql Table ''performance_schema...解决办法
这篇文章主要介绍了解决出现错误mysql Table 'performance_schema.session_variables' doesn't exist的相关资料,需要的朋友可以参考下2017-04-04MySQL中count(distinct col...)组合使用的注意要点详解
@count()是一个聚合函数,返回指定匹配条件的行数,开发中常用来统计表中数据、全部数据、不为null数据或者去重数据,这篇文章主要给大家介绍了关于MySQL中count(distinct col...)组合使用的注意要点,需要的朋友可以参考下2024-08-08MySQL execute、executeUpdate、executeQuery三者的区别
这篇文章主要介绍了MySQL execute、executeUpdate、executeQuery三者的区别的相关资料,需要的朋友可以参考下2017-05-05
最新评论