📅  最后修改于: 2023-12-03 15:17:28.210000             🧑  作者: Mango
在Mac下使用MySQL时,可能会遇到与sql_mode=only_full_group_by
不兼容的问题。具体表现为在执行包含GROUP BY
的SQL语句时,会出现类似以下错误信息:
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'example_db.example_table.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
该问题源于MySQL的默认配置,在MySQL5.7及以上版本中,sql_mode
默认为ONLY_FULL_GROUP_BY
,而Mac上安装的MySQL版本可能较老,不支持该特性,因此会出现上述错误。
将Mac上的MySQL升级到5.7及以上版本,可以避免该问题的出现,也能够使用only_full_group_by
等新特性。
sql_mode
配置可以修改MySQL的sql_mode
配置,去掉ONLY_FULL_GROUP_BY
特性,这样也可以避免上述错误。修改方法如下:
打开MySQL的配置文件my.cnf
,该文件通常位于/etc/mysql
目录下。
在文件末尾加上以下内容:
[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服务。
sudo service mysql restart
如果以上两种方法无效,也可以考虑修改SQL语句,避免使用GROUP BY
,或者通过聚合函数将查询结果分组,例如采用MAX
、MIN
等函数。
在Mac下使用MySQL时可能会遇到与only_full_group_by
不兼容的问题,可以通过升级MySQL版本、修改sql_mode
配置或者修改SQL语句来解决该问题。