MySQL出现 sql_mode=only_full_group_by的错误解决方法
今天导入数据时出现了如下 错误

原因是数据库版本为5.7以上的版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错
查询MySQL版本可以在命令行模式刚连接上数据库时就能看到,或者在进入mysql后使用命令:status查看版本号,
既然是版本的问题,那就查询一下配置看看具体的情况,命令行连接上数据库,再输入命令:输入如下命令 看一下配置
@@sql_mode

其中ONLY_FULL_GROUP_BY就是造成这个错误的罪魁祸首了,
对于group by聚合操作,如果在select中的列没有在group by中出现,那么这个SQL是不合法的,因为列不在group by从句中,所以设置了sql_mode=only_full_group_by的数据库,在使用group by时就会报错,
找到原因我们修改这个配置就可以了,找到MySQL配置文件,在linux系统上/etc/my.cnf文件,查询sql_mode字段,我并没有在配置文件中找到这个关键字,所以我手动添加进去: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 才能生效.// 重启命令
service mysqld restart;
// 退出数据库
exit;
|