一般出现这种问题的报错信息都是一样的,比如:
[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘*****’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这种情况一般在mysql7版本较为容易出现,mysql 7版本默认包含了only_full_group_by属性,是为了保证了select到的列都在group by中出现。我们可以查看所有的sql_mode的属性:

select @@GLOBAL.sql_mode;

一般性解决方法是:

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';

但是这个不适用于已建立的数据库,已建立数据库需要用如下命令修改:

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'

我以前用下面的方法修改,后来使用了上面第二种

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 ';

发表评论

电子邮件地址不会被公开。 必填项已用*标注