【发布时间】:2015-01-16 18:52:11
【问题描述】:
我在安装第 3 方软件时遇到此问题。我已阅读相关主题,所有主题都建议将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 模式并没有解决我的问题。我会继续调查和更新问题,以防万一。
【问题讨论】:
-
这很令人困惑,因为这不是 MySQL 的默认行为。也许您应该尝试:
SELECT @@GLOBAL.sql_mode; SELECT @@SESSION.sql_mode;看看是否设置了其中之一。 -
是第三方软件发出这个查询吗?正如一些答案所指出的,查询中存在缺陷。看起来您已在服务器中成功禁用
ONLY_FULL_GROUP_BY模式。但它几乎不可能在您的第三方应用程序的会话中仍然启用。您可以尝试使用SET GLOBAL sql_mode = '';全局禁用它,看看您的查询是否开始工作。 -
伙计们,感谢 cmets,但我已经尝试过了。请查看更新。