我在安装第三方软件时遇到此问题。我已阅读相关主题,并且所有人都建议将sql_mode
设置为空字符串(SET sql_mode = ''
),但该解决方案对我不起作用。仍然得到同样的错误。我需要在配置文件中设置这个吗?
这是一些有用的信息;
Server version: 5.6.15-56-log Percona Server (GPL), Release rel63.0, Revision 519
mysql> SHOW VARIABLES LIKE 'sql_mode';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_mode | |
+---------------+-------+
1 row in set (0.00 sec)
错误消息的失败查询是;
mySQL query error: SELECT MAX(e.entry_id) as max, MAX(e.entry_date) as maxdate,b.blog_id, b.blog_name, b.blog_seo_name FROM blog_entries e LEFT JOIN blog_blogs b ON ( b.blog_id=e.blog_id ) WHERE e.entry_status='published' AND e.entry_banish=0 AND e.entry_featured=0 AND b.blog_view_level='public' AND b.blog_disabled=0 GROUP BY e.blog_id, b.blog_name, b.blog_seo_name ORDER BY maxdate DESC LIMIT 0,50
SQL error: 'db_name_ipb.b.blog_id' isn't in GROUP BY
SQL error code: 1055
有什么想法吗?
不幸的是,代码已加密,因此无法尝试您的建议。另外 - 如上所述 - 更改SQL模式并没有解决我的问题。如果是开发,我会继续调查并更新问题。
答案 0 :(得分:0)
您正在选择b.blog_id
并按e.blog_id
分组。这就是问题所在。
SELECT MAX(e.entry_id) as max, MAX(e.entry_date) as maxdate,b.blog_id, b.blog_name, b.blog_seo_name
FROM blog_entries e LEFT JOIN
blog_blogs b ON ( b.blog_id=e.blog_id )
WHERE e.entry_status='published' AND e.entry_banish=0 AND e.entry_featured=0
AND b.blog_view_level='public' AND b.blog_disabled=0
GROUP BY b.blog_id, b.blog_name, b.blog_seo_name
ORDER BY maxdate DESC LIMIT 0,50
答案 1 :(得分:0)
这是您的查询:
SELECT MAX(e.entry_id) as max, MAX(e.entry_date) as maxdate, b.blog_id, b.blog_name, b.blog_seo_name
FROM blog_entries e LEFT JOIN
blog_blogs b
ON b.blog_id = e.blog_id
WHERE e.entry_status = 'published' AND e.entry_banish = 0 AND
e.entry_featured = 0 AND b.blog_view_level='public' AND
b.blog_disabled=0
GROUP BY e.blog_id, b.blog_name, b.blog_seo_name
ORDER BY maxdate DESC
LIMIT 0,50;
e.blog_id
中group by
b.blog_id
select
left join
inner join
。你应该选择其中一个。
注意:where
只能是b
。 inner join
表格{{1}}中的条件无论如何都会将其变为{{1}}。
注意:MySQL通常不强制执行此操作。您的环境必须设置ONLY_FULL_GROUP_BY模式,因此您的SQL模式不包含任何内容是非常可疑的。有关设置SQL模式的更多信息是here。