这与sql_mode = only_full_group_by

时间:2017-04-24 07:55:24

标签: php mysql sql

我的SQL查询无法显示此错误:

  

这与sql_mode = only_full_group_by

不兼容

我在其他mysql pannel中运行此查询已经正常工作。在新的服务器不工作....

如果我运行此错误,则错误无法正常工作且group by无法正常工作

mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

新服务器版

客户端API库版本:mysqlnd 5.0.12-dev - 20150407 - $ Id:b5c5906d452ec590732a93b051f3827e02749b83 $ PHP版本7.0.15-0ubuntu0.16.04.4

4 个答案:

答案 0 :(得分:1)

无法查看您的查询后无法确定,但我认为您在selectgroup by条款中使用了不同的列集。

select  a, b, sum(c)
from    table
group by a

如果是这种情况,您可以根据实际需要编写查询,具体取决于您的实际需求

select  a, b, sum(c)
from    table
group by a, b

select  a, sum(c)
from    table
group by a

请注意,这就是几乎所有数据库都必须使用group by的方式。 MySQL允许不同的集合是异常。

答案 1 :(得分:0)

您可以在查询前尝试SET sql_mode = '';;

我的猜测是你的mysql版本是5.7,它不能正常工作,这改变了设置。

答案 2 :(得分:0)

有关更多答案,请参阅Disable ONLY_FULL_GROUP_BY。这里的答案对我不起作用,但是编辑my.cnf,正如所建议的那样有效。我从Ubuntu 16.04测试了mysql-server 5.7.19-0ubuntu0.16.04.1。

但当然正确的解决方案是修复您的查询...恢复旧的不良行为只是一种解决方法。

答案 3 :(得分:0)

您只需将global替换为session

SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));