解决MySql版本问题sql_mode=only_full_group_by
作者:XiaoMaPro 发布时间:2024-01-14 00:23:17
标签: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
来源:https://blog.csdn.net/u011893509/article/details/87896806


猜你喜欢
- 1、修改本地化时间原理: 本地化时间格式化需要gettext支持, 假如你的环境没有开启此功能, 将会返回乱码, 影响#phpmyadmin
- 我有一个朋友,一直纠结一个问题:arguments接受的实参是一个列表,得到的是一个像数组一样的东西,于是他想实现无限参数求和,在遍历数组求
- python写文件时覆盖原来写的方法:使用“open('文件名','w')”语句,以写模式打开文件,然后使用
- 在开发中有些敏感接口,例如用户余额提现接口,需要考虑在并 * 况下接口是否会发生问题。如果用户将自己的多条提现请求同时发送到服务器,代码能否扛
- 一、中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,
- 数据表中有一列数据,如图所示:现在需要将该列数据分成三列。SQL 代码如下所示:第一种select max(case when F1%3=1
- 如下所示:# the basic ways = 0for x in range(10): s += x# the right ways =
- 本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下:1. 抛出异常和自定义异常Python用异常对象(exception
- CentOS7服务器中apache、php7以及mysql5.7的配置代码如下所示:yum upgradeyum install net-t
- 鉴于最近复习线性代数计算量较大,且1800答案常常忽略一些逆阵、行列式的计算答案,故用Python写出矩阵的简单计算程序,便于检查出错的步骤
- 国外纷纷传言IE8将是Internet Explorer的最后一个版本,这个猜测来源于Microsoft的CEO Steve
- 打开sqlserver时提示评估期已过解决方法:打开sqlserver安装中心(注意:选择R2的安装中心)选择版本升级中途可能会出现需要重启
- 什么是插槽?我们知道在Vue中 Child 组件的标签 的中间是不可以包着什么的 。可是往往在很多时候我们在使用组件的时候总想在组件间外面自
- ASP是目前一种广为应用的用来快速构建动态WEB站点的编程语言,默认的内置开发语言是VBScript,由于ASP和微软Windows系列操作
- uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能。它支持WSGI协议,同时它也支持自有的uWSGI协议,该
- MySQL多个left join on关联条件顺序注意:下面的案例特别重要!请重视!SQL有点长,但确实是干货!结论如果存在多个left j
- 扫描某文件夹下所有文件(包括子文件夹中的文件),使用os.walk;os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上
- 表空间概述Oracle的表空间属于Oracle中的存储结构,是一种用于存储数据库对象(如:数据文件)的逻辑空间,是Oracle中信息存储的最
- Python中核心的数据类型有哪些?变量(数字、字符串、元组、列表、字典)什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据
- 实现了我的小跳槽以后,从8月7号入职了现在的这家公司,我好像是加入了救火队的行列,还没有开始开发新的模块,只是一直在实现已经上线模块中的新需