navicat11连接mysql5.7,执行create时报1055错误的解决

在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的方法也进行了详细说明。

环境: 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语句修改数据库变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值