我的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
答案 0 :(得分:1)
无法查看您的查询后无法确定,但我认为您在select
和group 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',''));