Mysql版本问题导致报错

本文最后更新于:2 分钟前

版本原因导致的问题

问题

有一条SQL在服务器上可以正常执行,在本地却报错,经过百度,发现是mysql版本不同导致的

sql

1
2
3
4
5
6
7
SELECT
DATE_FORMAT(create_time, '%m月') x, SUM(money) y
FROM
child_bill
WHERE transaction_type IN (5,6,7,8,9,10)
AND YEAR(create_time)=YEAR(NOW())
GROUP BY DATE_FORMAT(create_time, '%Y-%m')

报错如下

1
java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY

解决

原因是因为MySQL启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下)

需要修改配置文件,在my.ini的最后一行加入以下配置即可

1
2
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启MySQL服务,搞定!

参考链接:https://blog.csdn.net/Seven_0110/article/details/112356269


本文作者: 仅安
本文链接: https://jinan6.vip/posts/2117804210/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!