win下mysql分组查询报错记录
win下mysql分组查询报错记录
在数据库采用子查询然后分组方式时遇到的报错问题,记录下问题及解决方式
NO1:采用的TP链式查询方式关联了几个表
$join = [
['btab b', 'a.bid=b.id'],
['ctab c', 'b.cid=c.id'],
['dtab d', 'c.did=d.id']
]
$subQuery = Db::name('atab')->alias('a')->join($join)->where($map)->order($sort)->buildSql();
$dataInfo = Db::table($subQuery.' a')->group('bid')->select();
......
在本地执行时正常运行,放线上后执行报错如下:
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'a.did' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
NO2:该问题出现的主要原因是由于数据库版本问题导致,主要问题在sql_mode=only_full_group_by
NO3:一劳永逸的办法即修改数据库配置文件my.ini,查看是否存在sql_mode项,没有则添加如下语句:
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION