Docker中MySql5.7中only_full_group_by问题的解决方法
MySQL5.7中only_full_group_by问题的解决方法
当我们使用MySQL5.7的时候,经常会遇到一个问题:only_full_group_by。当我们执行一个查询语句时,如果查询中包含group by子句,则MySQL会报错:
Error Code: 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_by
解决方法
方法一:在my.cnf中配置sql_mode
找到my.cnf文件,打开它,在[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'
重启MySQL服务器,查看是否生效。
方法二:在运行查询语句时,通过修改session的sql_mode来解决
可以通过以下命令来查看当前session的sql_mode:
show variables like 'sql_mode';
可以通过以下命令来修改当前session的sql_mode:
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
方法三:通过修改表的存储引擎来解决
可以通过以下命令来查看表的存储引擎:
show create table table_name;
可以通过以下命令来修改表的存储引擎:
alter table table_name engine=innodb;
相关文章