如何处理这种only_full_group_by问题:错误代码:1301 数据集配置错误

mysql升级为5.7后,报表预览报错信息如下:
错误代码:1301 数据集配置错误Query:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

问题语句如下:
SELECT 财富管理部,分公司,sum(月业绩任务) as 月目标任务
FROM taskslist_tmp
where year(日期)=year('2017-04-01') and month(日期)=month('2017-04-30')
group by 分公司

但在navicate中能通过;又经过验证确认不是only_full_group_by的问题(参见:http://www.cnblogs.com/grimm/p/5751911.html):SELECT @@sql_mode的结果为STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

我如果修改成如下语句后能顺利通过:
SELECT 财富管理部,分公司,sum(月业绩任务) as 月目标任务
FROM taskslist_tmp
where year(日期)=year('2017-04-01') and month(日期)=month('2017-04-30')
group by  财富管理部,分公司



问题是这样的太多模板中使用了类似的语句,所以不想通过修改语句的方式,我该怎么办呢?


FineReportalu 发布于 2017-5-17 19:38
回答问题
悬赏:2 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共12回答
最佳回答
0
Poseidon发布于2017-5-17 19:40(编辑于 2023-9-6 09:34)
555
  • flyingsnake flyingsnake

    mysql分组不用对应。sqlserver才需要
    回复
    2017-05-17 19:51 
  • alu alu(提问者)

    升级驱动到对应数据库版本5.7:mysql-connector-java-5.1.39-bin.jar
    也不行,照样报错
    回复
    2017-05-18 09:10 
最佳回答
0
flyingsnake发布于2017-5-17 19:51(编辑于 2023-9-6 09:34)
555
最佳回答
0
zsh331发布于2017-5-17 21:09(编辑于 2023-9-6 09:34)
555
  • alu alu(提问者)

    以前数据库是mysql5.5,FR不会报错
    回复
    2017-05-18 08:45 
最佳回答
0
yets11发布于2017-5-17 22:11(编辑于 2023-9-6 09:34)
555
最佳回答
0
alu发布于2017-5-18 08:44(编辑于 2023-9-6 09:34)
555
最佳回答
0
alu发布于2017-5-18 08:45(编辑于 2023-9-6 09:34)
555
  • zsh331 zsh331
    1. SELECT any_value(财富管理部),分公司,sum(月业绩任务) as 月目标任务
    2. FROM taskslist_tmp
    3. where year(日期)=year(\'2017-04-01\') and month(日期)=month(\'2017-04-30\')
    4. group by  分公司
    复制代码


    用这个呢?就是由于group by 没有按照严格的语法来写造成的,5.7版本对这个有相关规定!
    回复
    2017-05-18 08:57 
最佳回答
0
zsh331发布于2017-5-18 08:57(编辑于 2023-9-6 09:34)
555
最佳回答
0
alu发布于2017-5-18 09:10(编辑于 2023-9-6 09:34)
555
最佳回答
0
alu发布于2017-5-18 09:12(编辑于 2023-9-6 09:34)
555
  • zsh331 zsh331

    有时候,项目上线运行后,真不建议随便升级。因为你不知道会到来什么灾难性的问题!{:9_225:}
    回复
    2017-05-18 09:37 
  • 小龙 小龙
    在my.cnf 里面设置, 首先备份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

    试试看。记得重启一下MySQL服务器!

    MySQL官方文档:https://dev.mysql.com/doc/refman ... _only_full_group_by
    [size=14.256px]The default SQL mode in MySQL 5.7 includes these modes: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.
    回复
    2017-05-18 11:42 
最佳回答
0
zsh331发布于2017-5-18 09:37(编辑于 2023-9-6 09:34)
555
  • 0关注人数
  • 796浏览人数
  • 最后回答于:2017-5-18 11:57
    活动推荐 更多
    热门课程 更多
    返回顶部