运行一个项目出现tomcat启动不起来的报错,经过日志排查是因为这个sql语句的问题。
"Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'case_table.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by"
原因:存在非聚合列 id ,没有包含在GROUP BY子句中。
但是本例中,其它地方需要用到这个id列,不能去掉。
方法1
查询全局sql_mode
SELECT @@GLOBAL.sql_mode;
SET GLOBAL 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后,以上设置失效。
方法2
启动mysql时,增加sql_model选项,如下:
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" [...其它选项]
方法3:
linux服务下,修改my.conf (Windows下修改my.ini),在[mysqld]节点下,最末尾添加sql_mode配置,如下:
...
[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
[其它节点配置]
...