mysql8解决分组报only_full_group_by的问题:
mysql8下执行group操作,会报下面的错误,5.7以上都会,只是sql_mode的参数略有不同,具体看下面的注释
Error 1055: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'age-club-db.d_inner_products.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
先执行:
select @@sql_mode;
输出:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
删除ONLY_FULL_GROUP_BY:
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION //注意 mysql8 是没有 NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 参数的,所以只用把 ONLY_FULL_GROUP_BY 去掉,剩下的就可以了,否则重启以后报错
vagrant@homestead:~$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld]最后添加下面的配置,然后重启:
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
vagrant@homestead:~$ sudo service mysql restart //重启
vagrant@homestead:~$ service mysql status //查看结果
