MySQL5.7 sql_mode=only_full_group_by

原文章链接:https://www.cnblogs.com/anstoner/p/6414440.html

一直在使用mysql5.7版本的group by 时对于未分组的字段查询的报错解决方案是改数据库配置,但是有一天忽然想起mysql官方为什么修改这个呢,应该用官方推荐的方式去实现,而不是去回退的方法

一:在sql查询语句中不需要group by的字段上使用any_value()函数

这种对于已经开发了不少功能的项目不太合适,毕竟要把原来的sql都给修改一遍
二:修改my.cnf(windows下是my.ini)配置文件,删掉only_full_group_by这一项

阅读更多

mysql 老是报this is incompatible with sql_mode=only_full_group_by

11-05

大大们,帮看下是怎么回事,本地MYSQL上运行没有问题,可是程序运行却报下面的错误。rnrn错误信息如下:rnExpression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'his.a.AttachPathId' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_byrn----------------------------------------------------------------------------------------------------------------rnSQL如下:rnSELECT mpd.MaterialId VE_MaterialShopId,mpd.MaterialName,mpd.TypeId,mpd.TypeName,mpd.Unit,rnmpd.Standard,mpd.OutPrice,mpd.ProductName,rncase when aa.Path is null then 'http://localhost:4321/UploadFolder/Msg/Error.jpg' else aa.Path end as Path rnfrom (SELECT m.MaterialId,m.Name MaterialName,m.TypeId,d.`Value` TypeName,rnm.Unit,m.Standard,m.OutPrice,p.Name ProductName From material m rnLEFT JOIN product p ON m.ProductId=p.ProductId rnLEFT JOIN dict d ON m.TypeId=d.DictId) mpd rnLEFT JOIN (SELECT a.AttachPathId,a.EntName,a.EntId,CONCAT('http://localhost:4321',a.Path) Path rnFROM attachpath a WHERE EntName='Material' GROUP BY EntId) aa rnON mpd.MaterialId=aa.EntId rn-------------------------------------------------------------------------------------------------------------------rn本地my.ini配置了跟服务器一样的 sql_mode ,本地运行没有问题,服务器用Navicat运行也没有问题,可是程序执行却报上面的错误。rnrnsql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'rn

没有更多推荐了,返回首页