环境: MySQL 5.7,CentOS 7.8-2003
一、问题
使用navicat11.1连接MySQL 5.7.x数据库,执行update语句时报了一个错误
[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 clause; this is incompatible with sql_mode=only_full_group_by
以前从来没有遇见过,现在记录一下解决过程。
二、解决
耐心较差,直接说解决办法吧;想看原因,请看后面的《三》。
主要有两种:
1、升级到navicat12及以上版本,首选方式。
经验证,升级到11.2.x也可以解决该问题。
2、把MySQL 5.7.x在sql_mode上新增的ONLY_FULL_GROUP_BY去掉——不建议使用
ONLY_FULL_GROUP_BY为新的SQL编写规范的特性,也是写SQL语句时的普遍规范写法。
这也是,网上其它文章解决1055错误,采用的普遍方式;原因都没搞明白,瞎JB改一通。
用sql在服务器上查一下sql_mode里面是否有ONLY_FULL_GROUP_BY这个参数。
方法一: 通过SQL语句修改数据库变量

在MySQL 5.7环境下,使用Navicat11执行SQL时遇到1055错误。解决方法包括升级Navicat到11.2以上版本或修改MySQL的sql_mode,移除ONLY_FULL_GROUP_BY。ONLY_FULL_GROUP_BY是MySQL5.7后的默认SQL模式,导致某些非聚合查询报错。临时和永久修改sql_mode的方法也进行了详细说明。
最低0.47元/天 解锁文章
1394

被折叠的 条评论
为什么被折叠?



