【发布时间】:2016-12-12 22:50:15
【问题描述】:
为什么我在mysqlnd 5.0.12-dev 上收到此错误:
1055 - SELECT 列表的表达式 #29 不在 GROUP BY 子句中,并且包含不是的非聚合列 'db_name.p2.url'
在功能上依赖于 GROUP BY 子句中的列;这是 与 sql_mode=only_full_group_by 不兼容
查询:
SELECT p.* ,
p2.article_id AS parent_id ,
p2.url AS parent_url ,
p3.article_id AS parent_parent_id ,
p3.url AS parent_parent_url ,
p3.title AS parent_parent_title
FROM article AS p
LEFT JOIN article AS p2
ON p2.article_id = p.parent_id
AND p.article_id <> p2.article_id
LEFT JOIN article AS p3
ON p3.article_id = p2.parent_id
AND p2.article_id <> p3.article_id
WHERE p.url = 'contact'
AND p.type = 'page'
AND p.hide = '0'
GROUP BY p.article_id
ORDER BY p.backdated_on DESC
查询在mysqlnd 5.0.11-dev 上正常工作。
有什么想法吗?
【问题讨论】:
-
顺便说一句:您使用的 MySQL 版本大约有 11 年的历史。您使用这么旧的版本有什么原因吗?
-
我不知道为什么我从命令行
sudo apt-get install mysql-server mysql-client得到那个版本的mysql,我是从安装mysql 的在线指南中遵循的。那么安装最新mysql的正确命令行是什么? -
更多信息:
mysql -V输出:mysql Ver 14.14 Distrib 5.7.13, for Linux (x86_64) using EditLine wrapper -
但在 phpmyadmin 的屏幕上,它会打印以下信息:
Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 241ae00989d1995ffcbbf63d579943635faf9972 $