有一天我们的测试反馈了一个问题如下:
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dev.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
原因是5.7版本的数据库已经对sql进行了更加严格的验证。我们可以人为改变这种状态。
先查询是否为所述问题语句为:
select @@global.sql_mode
查询结果如下:
解决办法是:
set @@global.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.cnf在末尾增加一行并保存退出(一般在etc下 要在mysqld后面加)
[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
service mysql restart
服务生效