mysql遇到的小问题1055报错解决方法
MySQL发生[Err] 1055的解决方案
在mysql库中进行insert into,执行结束后,总是会跳出报错
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_b
第一次遇到这样的错误,貌似是由于MySQL的版本问题,发现自己用的是MySQL 8版本
此时有两种解决方案
方案一:临时修改(服务器重启后会失效)
1 | -- 通过该语句查询这个值 -- |
会得到如下结果:
1 | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
再执行下述语句,引号里的内容是上述结果剔除ONLY_FULL_GROUP_BY后余下的内容
1 | set @@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配置文件(服务器重启后生效)
在my.cnf文件中的[mysqld]的下面加上下列语句
1 | sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
一般不建议将ONLY_FULL_GROUP_BY关闭,因为这个符合SQL标准,也可以使用MySQL中的一个函数 any_value(field),括号中是一个字段,可以使得括号中的字段既能被查询出来又可以不出现在group by语句中
docker中配置调整
如果你用的是docker容器
1 | #查询出mysql的容器名称 |
mysql遇到的小问题1055报错解决方法
2020/06/06/mysql遇到的小问题1055报错解决方法/
发布于
2020-06-06 20:10
许可
评论
评论插件加载失败
正在加载评论插件