MYSQL---Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column

--数据库中插入数据或执行sql语句时一直报下面这个错误:
Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' 
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

 

缘由:这是数据库的sql_mode设置的有问题。Mysql能够支持不一样的SQL模式,不一样的SQL模式会有不一样的语法,执行不一样的数据校验简查。sql

首先,能够先查看一下数据库如今的sql_mode的值,sql语句为:数据库

select version(), @@sql_mode;this

获取结果可能以下,不一样的设置查询出来的有区别:spa

 

而后能够使用以下语句,去设置本身须要的sql_mode..net

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

code

2、尝试第二种方案orm

一、查看sql_modeblog

select @@sql_mode
查询出来的值为:it

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_SUBSTITUTIONio

二、去掉ONLY_FULL_GROUP_BY,从新设置值。

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‘;
三、上面是改变了全局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‘;或者:在my.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'在sql_mode 中去掉only_full_group_by 传送门:https://blog.csdn.net/u012259256/article/details/56482218

相关文章
相关标签/搜索