问题描述
在运行Ubuntu下数据库时执行group by 时报错,但在Windows下没有问题
报错内容
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘exercise_8.1.sc.student_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
原因
是由于默认的 MySQL 配置中 sql_mode 配置了 only_full_group_by,需要 GROUP BY 中包含所有 在 SELECT 中出现的字段。
only_full_group_by:使用这个就是使用和oracle一样的group 规则, 出现在select后的字段(除了聚合的字段以外SUM,AVG,MAX,MIN)都必须要在group中。
查看sql_mode
输入select @@sql_mode
执行命令
解决办法
找到相应的配置文件
在终端输入命令(配置文件可能会因为版本不同,路径会有点差别)
sudo vim /etc/mysql/mysql.conf.d
选择mysqld.cnf
修改文件内容,将以下内容添加到文件末尾
键入"i"开始编辑,esc键退出编辑,输入":wq"保存并退出
注意去除#号
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
保存文件后重启mysql