mysql [err] 1055错误解决

mysql [err] 1055错误解决,第1张

在使用mysql是在navicat中查询一条简单语句使用了 select * from table 虽然查询成功了,但是报了

[Err] 1055 - 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 clausethis is incompatible with sql_mode=only_full_group_by 错误.

在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错

ONLY_FULL_GROUP_BY模式要求select语句中查询出来的列必须是明确的(其他语句也是一样)。

以SQL语句 select columes from table group by list 为例:columns必须是聚集函数或者在group by后的表达式list中,并且list中必须包含主键,否则也会报错。

insert、update、delete语句都会报错(但不影响SQL语句的执行),因为这三种语句执行之前也会执行查询 *** 作。

以主键为id的表为例:

执行sql语句使sql_mode的模式去掉ONLY_FULL_GROUP_BY,但是重启服务会失效

注意: 在ubuntu 18中的mysql配置文件需要修改 mysqld.cnf , 其他系统的其他mysql版本需要根据特定情况查找需要修改的配置文件,如:windows中一般是 my.ini ,linux中可能是 my.cnf

在[mysqld]下面增加如下内容

验证: 再次在navicat中 select * from table 查询,已没有错误.

研发创建了存储过程,需要部署定时任务,在上线前进行检查,执行定时脚本时,出现了如下报错

ERROR: [SQLCODE] 1055 , [SQLSTATE] 42000 , [MESSAGE] Expression #1 of ORDER BY clause is not in GROUP BY

此时查看sql_mode,发现里面没有only_full_group_by,但是执行还会报错,怀疑是链接没断开,当前session没生效,断开重连还是一样的报错

遂查看存储过程 show create procedure dataabase.procname

发现创建之前的sql_mode有only_full_group_by,为了能正常运行,在当前模式下,删除新建存储过程,即可重新调用,执行成功。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8512017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存