使用brew安装了mysql,但是在group by的时候出现了sql_mode=only_full_group_by的报错,也就是说,如果表中有两个字段id和pos,那么使用group by的时候必须要用group by id,pos才能出结果,不然就会报错,要把所有的字段全部填上,真的是很麻烦了。
然后就是需要修改sql_mode了,通过网上查询要修改my.cnf文件,但是安装的是mysql8.0.19,通过find找my.cof文件,找到以下路径:
/usr/local/Cellar/mysql/8.0.19/.bottle/etc/my.cnf
/usr/local/etc/my.cnf
然后又使用brew寻找mysql的安装路径:
cd $(brew --prefix mysql)
但是这个目录下面甚至没有cnf文件。
苦苦找不到配置文件也是很难了。
于是想到mysql里的配置变量修改,类似@@version可以查看版本这样的。
用@@sql_mode尝试成功
mysql> select @@sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@sql_mode |
+----------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
然后使用set修改:
mysql> set @@sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";
去掉最前面的ONLY_FULL_GROUP_BY即可。
所以mysql的配置修改感觉还是sql语句来得实在,找配置文件有时候真的是难受。