出错原因:MySQL 5.7.5 及以上功能依赖检测功能,而我使用的mysql是8.0版本。如果启用了ONLY_FULL_GROUP_BY SQL 模式(默认情况下),MySQL将拒绝选择列表,HAVING 条件或 ORDER BY 列表的查询引用在 GROUP BY 子句中既未命名的非集合列,也不在功能上依赖于它们。
解决方法: 在mysql的my.ini(位于mysql的根目录下,如果没有my.ini文件则需要添加并对data进行重新初始化,下一篇blog会记录)文件中进行修改:
在最后一行添加如下:
[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
MYSQL8以上已经取消了NO_AUTO_CREATE_USER,sql_mode中不能包含这个。
去掉原文中的NO_AUTO_CREATE_USER,变为如下:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION